Я пашу через Учите вас Haskell для Great Good, и я достиг до раздел 8.4, "Производные экземпляры" . В этом разделе содержится следующее объявление типа данных:
data Person = Person { firstName :: String
, lastName :: String
, age :: Int
} deriving (Eq)
При попытке
*Main> mikeD == Person {firstName = "Michael", lastname = "Diamond", age = 43}
Я получил следующую ошибку:
<interactive>:55:41:
`lastname' is not a (visible) field of constructor `Person'
Откорректировав lastname
до lastname
, я удалил ошибку.
Вопрос:
В сообщении об ошибке слово (visible)
намекает мне, что должна быть возможность объявить поле скрытым/невидимым. Это правильно или нет? Если это так, как я могу объявить поле в конструкторе как скрытое, и каковы общие сценарии, в которых нужно было бы объявлять скрытые поля? Если бы вы могли объяснить это, представив простой пример их использования, это было бы оценено.
Примечание. Я не мог найти ссылку на/подробности о скрытом или невидимом поле в LYAH.