2013-09-27 48 views
-1
module Main 

alicebob :: String -> String 
alicebob "alice" = "Hi alice" 
alicebob "bob" = "Hi bob" 
alicebob _ = "Hi person whose name is neither alice nor bob." 

greet :: IO() 
greet = do 
     putStrLn "hi. whats your name?" 
     name <- getLine 
     putStrLn (alicebob name) 

简单的编程练习,以获得一些用户输入,并回复。刚开始学习haskell时,请原谅简单的问题。在线alicebob :: String -> String上发生错误。 我该如何解决它?为什么这个[haskell]编译错误?

+6

为了将来的参考,如果您在此发布有关编译器错误的信息,您应该将错误复制/粘贴到您的文章中。尽管这个只是你错过了'Module'末尾的'where',正如@DanielFischer所指出的那样,随着你在语言中的进步,你会看到的错误一眼就会变得更加难以确定。 – bheklilr

+0

您确定该错误在该行吗? [在ideone中,您的代码](http://ideone.com/N3Mbye)实际上会生成“输入模块”上的“解析错误”。 –

回答

8

模块头必须包含一个where

module Main where 
--   ^^^^^ 

编译器期望找到where(可能通过一个出口列表之前),并当它发现alicebob相反,它引发错误。