Я пытаюсь читать п на первой линии, то п строк ввода и печатать сумму первых 2-х элементов из каждой строки, такие как:Haskell: преобразование String -> [Список]
Вход:
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, поэтому я не уверен, как его решить.
попробуйте написать типы, это поможет в отладке много! – jamshidh
Некоторые подсказки: 'type String = [Char]'. Как вы прочтете строку типа «12 3», чтобы получить ответ «15»? Должно быть что-то, что что-то делает с пробелами. Как вы преобразуете символ типа '7 '' в число, которое вы можете добавить как' 7'? – Cirdec
'interactive' работает только с одной строкой за раз и никогда не останавливается. Вы должны прочитать первую строку, а затем точно количество строк, указанных этой первой строкой, например, с помощью 'readLn >> = flip replicateM getLine'.Тип 'processInput' должен быть' [String] -> [String] ', но' взаимодействовать :: (String -> String) -> IO() '- есть другие ошибки типа, но это, скорее всего, источник один из которых вы специально упомянули. – user2407038