Haskell拆分用户输入

时间:2014-11-27 19:31:50

标签: haskell

我想从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()

1 个答案:

答案 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