Как использовать конструкторы 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
Другие вопросы по тегам