невидимое/скрытое поле в конструкторе

Я продираюсь черезИзучите Haskell во благо, и я добрался до раздела 8.4, "Производные экземпляры" . В этом разделе есть следующее объявление типа данных:

data Person = Person { firstName :: String  
                    , lastName :: String  
                    , age :: Int  
                     } deriving (Eq)

При попытке

*Main> mikeD == Person {firstName = "Michael", lastname = "Diamond", age = 43}

Я получил следующую ошибку:

:55:41:
`lastname' is not a (visible) field of constructor `Person'

Исправив lastnameна lastName, я устранил ошибку.

Вопрос:

В сообщении об ошибке слово (visible)мне намекает, что должна быть возможность объявления поля скрытым/невидимым . Это правильно или нет? Если это так, как я могу объявить поле в конструкторе скрытым и каковы общие сценарии, в которых нужно объявить скрытые поля? Если бы вы могли объяснить это, приведя простой пример их использования, это было бы признательно.

Примечание :Я не смог найти никаких ссылок/деталей о скрытом или невидимом поле в LYAH.

11
задан Antal Spector-Zabusky 23 July 2012 в 09:32
поделиться