Я пытаюсь создать тип «Человек», где у каждого человека есть секс и имя.Почему эта декларация типа не работает?
data Sex = Sex Char deriving Show
male = Sex 'M'
female = Sex 'F'
data Name = Name [Char] deriving Show
data Person = Person {
Sex :: Sex,
Name :: Name
} deriving (Show)
Когда я пытаюсь загрузить это в GHCI я просто получить бесполезную ошибку parse error on input 'Sex'
Что я здесь делаю неправильно?
Просто случайный PS, если бы вы определили это так, как если бы вы использовали значение данных boolean, то есть гораздо меньше возможностей и меньше ошибок. Например, что, если кто-то вызвал функцию с (Sex «Z»)? Я бы предложил следующее: данные Пол = Женский | Мужской вывод (...) – codebliss
@codebliss, спасибо, я забыл о '' 'трюке для типов. (Я на самом деле * n00bish n00b.) – friedo
Его не вопрос, который вы задали, но вы бы лучше определили Секс как «данные Секс = Мужской | Женский». –