1
我试图读取在第一线n,则n输入的线,并打印从每一行的第2个元件,诸如的总和:Haskell中:转换字符串 - > [列表]
输入:
2
1 2
3 4
输出:
3
7
到目前为止我的代码看起来像:
import Control.Monad
fromDigits = foldl addDigit 0
where addDigit num d = 10*num + d
first (x:xs) = fromDigits x
second (x:xs) = fromDigits xs
main = interact processInput
processInput input = unlines [perLine line | line <- lines input]
perLine line = first line + second line
,但我得到以下错误
无法匹配型“[字符]”与“炭”
无法匹配类型“字符”与“[字符串]”
我是Haskell的新手,所以我不确定如何解决它。
尝试写出来的类型,它会在调试有很大的帮助! – jamshidh
一些提示:'type String = [Char]'。你将如何阅读“12 3”这样的一行来得到答案'15'?必须有一些东西与空间做些什么。你如何将像'7'这样的字符转换成可以像'7'一样添加的数字? – Cirdec
“互动”一次只处理一行,并且永不停止。您应该读取第一行,然后精确地读取第一行指定的行数 - 例如,使用readLn >> = flip replicateM getLine'。'processInput'的类型必须是'[String] - > [String]',但'interact ::(String - > String) - > IO()' - 还有其他类型的错误,但这可能是你特别提到的一个。 – user2407038