2013-10-09 2 views
1

У меня есть следующие функции:Haskell тип рассогласование

encodeChar :: Int -> [Char] -> Char -> Char 
encodeChar x y z = eChar (offsetChar x y) z 

encodeString :: Int -> [Char] -> String -> String 
encodeString _ _ "" = "" 
encodeString x y z = encodeChar x y (head z) ++ encodeString x y (tail z) 

который возвращает

*** Expression  : encodeChar x y (head z) ++ encodeString x y (tail z) 
*** Term   : encodeChar x y (head z) 
*** Type   : Char 
*** Does not match : [Char] 

Однако, как х и у матча Int и [Char] и (глава г) возвращает тип Char Я надеваю Посмотрите, что вызывает проблему ... Идеи? : S Спасибо!

ответ

3

encodeChar возвращает Char, но первый аргумент ++ здесь должен быть [Char]. Используйте : вместо ++.

+0

Aaah, конечно: S Прошу прощения, я продолжаю забывать, что функции могут генерировать список и пытаться объединить все, как если бы это была строка, спасибо, работает! : D – MrD

Смежные вопросы