输入“=”时解析错误

时间:2012-05-19 18:17:35

标签: haskell

嗨我在输入“=”中得到(第7行)Parse错误,这只是对字符串中的单词求和,任何帮助都表示赞赏。感谢。

module Main where

main = do
 putStr "Enter a string: "
 input <- getContents

 value = unwords . sum . words input
 putStrLn (value)

1 个答案:

答案 0 :(得分:4)

该行:

value = unwords . sum . words input

语法无效。你需要一个let语句。

let value = unwords . sum . words input

这仍然无效,您想要将您的功能(以及三个功能的组合)应用于输入:

let value = (unwords . sum . words) input

或者也许:

let value = unwords . sum . words $ input

这仍然无效,因为输入为String,而words的结果是String[String])的列表。因此,您需要将字符串读入某些Num类型(Integer s?),然后转换回Stringunwords没有用,因为你只有一个单词,总和,留在最后(vs一个单词列表,unwords需要):

let value = show . sum . map read. words $ input

根据类型的不同,您可能需要对read或sum进行注释,以指定它是Int还是Double还是其他内容。