0

嗨,我在输入“=”中收到一个(第 7 行)解析错误,它只是对字符串中的单词求和,感谢您的帮助。谢谢。

module Main where

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

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

1 回答 1

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

这仍然无效,因为输入是 aString而结果是( )words的列表。因此,您需要将字符串读入某种类型(s?),然后转换回. 没用,因为最后只剩下一个词,即总和(与 unwords 需要的词列表相比):String[String]NumIntegerStringunwords

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

根据类型,您可能希望对读取或总和进行注释以指定它是 anInt还是 aDouble或其他内容。

于 2012-05-19T18:27:19.580 回答