Я продираюсь черезИзучите 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.