簡體   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