我想从Haskell中的用户输入中获取前三个元素,但是我收到了错误消息。 谢谢你的帮助
getCmd cmd = do
putStrLn take 3 cmd
main = do
putStrLn "please type something"
name <- getLine
if name /= "QUIT" then do
getCmd(name)
main
else
return()
答案 0 :(得分:3)
您对getCmd
的定义应为:
getCmd cmd = do
putStrLn (take 3 cmd)
函数应用程序是左关联的,因此您的定义被解析为
(((putStrLn take) 3) cmd)
因此您需要添加括号,以便将putStrLn
应用于应用take
的结果。
Haskell还定义了$
中缀运算符,它的优先级低于函数应用程序,因此通常使用它而不是使用括号。您对do
的使用也是多余的,因此您可以将getCmd
定义为
getCmd cmd = putStrLn $ take 3 cmd
甚至
getCmd = putStrLn . take 3