Как использовать конструкторы Value для создания записей в PureScript
Я пытаюсь создать запись на основе массива данных, функция выглядит следующим образом:
type Address = {
street :: String,
city :: String,
state :: String
}
convertToAddress :: Array String -> Maybe Address
convertToAddress [street, city, state] = Just (Address { street: street, city: city, state: state })
convertToAddress _ = Nothing
Здесь я пытаюсь создать запись типа Address, используя конструктор значения Address, но он выдает ошибку при компиляции:
Unknown data constructor Address
1 ответ
Решение
type
определяет только псевдоним типа, поэтому Address
а также
{
street :: String,
city :: String,
state :: String
}
На самом деле одного типа. Если вы хотите сгенерировать конструктор, вам придется использовать newtype
:
newtype Address = Address {
street :: String,
city :: String,
state :: String
}
Или же вы можете просто избавиться от конструктора в вашем коде и просто использовать тип записи:
convertToAddress :: Array String -> Maybe Address
convertToAddress [street, city, state] = Just { street: street, city: city, state: state }
convertToAddress _ = Nothing