Я делаю это упражнение из конца главы 3 в The Purescript Book:
Напишите функцию, которая ищет запись по адресу, повторно используя существующий код в findEntry. Проверьте свою функцию в PSCi.
Я пытался:
findByAddress address = head <<< filter filterEntry
where
filterEntry :: Entry -> Boolean
filterEntry entry = entry.address == address
какие ошибки с:
No type class instance was found for
Data.Eq.Eq { street :: String
, city :: String
, state :: String
}
while applying a function eq
of type Eq t0 => t0 -> t0 -> Boolean
to argument entry.address
while inferring the type of eq (entry.address)
in value declaration findByAddress
Вопрос 1: Я бы подумал, что типы записей имеют функцию равенства по умолчанию, а именно, что все атрибуты записей равны. Есть один? Как мне его использовать?
Вопрос 2: На случай, если мое предположение, приведенное выше в вопросе 1, было ложным, я попробовал:
eq :: Address -> Address -> Boolean
eq address1 address2 = address1.street == address2.street &&
address1.city == address2.city &&
address1.state == address2.state
Но это не решило проблему. Почему нет?