繁体   English   中英

Haskell:转换字符串-> [列表]

[英]Haskell : Transform String -> [List]

我正在尝试在第一行中读取n,然后读取n行输入,并从每行打印前2个元素的总和,例如:

输入:

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

但我收到以下错误

无法将类型'[Char]'与'Char'匹配

无法将类型'Char'与'[String]'相匹配

我是Haskell的新手,所以不确定如何解决它。

一些提示,顺序为:

  • 在某些时候,您需要将数字从Char转换为Int等。
    • 除非您提出要求,Haskell不会为您这样做。 使用ord
  • x:xs模式中, xs是列表的其余部分,而不是下一个元素。
    • 这可能是您的[Char]相对于Char问题的来源。
  • 看起来您想将每行视为一个单词序列。
    • 尝试使用words功能。
  • 最后,您需要将数字转换成可打印的形式以输出。
    • Haskell也不会为您这样做。 使用show

通常,我建议启动ghci并使用它,以使您对Haskell有一些基本的了解。 在另一个窗口中拉起Hoogle或其他Haskell参考...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM