Я новичок в функциональном программировании и Haskell, и мне очень трудно разобраться в создании ваших собственных типов данных.В качестве источника обучения я использую http://learnyouahaskell.com/,, но все еще не могу понять некоторые идеи.
Моя конкретная проблема заключается в том, что я пытаюсь создать экземпляр для своих пользовательских данных.тип, который всегда показывает символ «+» перед тем, что отображается (в моем случае ввод 555 будет «+555»).Вот как я пытался это решить.
data CountryCode = CountryCode Integer deriving Eq
instance Show CountryCode where
show _ = "+" : _
И вот что я получаю, когда пытаюсь его загрузить.
[1 of 1] Compiling Main ( phonetest.hs, interpreted )
phonetest.hs:6:14: error:
• Couldn't match type ‘[Char]’ with ‘Char’
Expected type: String
Actual type: [[Char]]
• In the expression: "+" : _
In an equation for ‘show’: show _ = "+" : _
In the instance declaration for ‘Show CountryCode’
phonetest.hs:6:20: error:
• Found hole: _ :: [[Char]]
• In the second argument of ‘(:)’, namely ‘_’
In the expression: "+" : _
In an equation for ‘show’: show _ = "+" : _
• Relevant bindings include
show :: CountryCode -> String (bound at phonetest.hs:6:5)
Failed, modules loaded: none.
Я могу получить что-то изсообщение об ошибке, но недостаточно, чтобы заставить его работать правильно.Я также пытался show (CountryCode _) = "+" : _
, но haskell все еще жалуется.Мне это кажется довольно логичным, но очевидно, что мне не хватает базовых знаний о хаскеле.