2017-09-25 6 views
2

Je cherche à créer un enregistrement basé sur un tableau de données, la fonction ressemble à ceci:Comment utiliser les constructeurs de valeur pour créer des enregistrements dans 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 

Ici, je suis en train de créer un dossier de l'adresse de type en utilisant le constructeur de valeurs d'adresses, mais il jette une erreur lors de la compilation:

Unknown data constructor Address 

Répondre

4

type définit uniquement un alias de type, de sorte Address et

{ 
    street :: String, 
    city :: String, 
    state :: String 
} 

Sont en réalité du même type. Si vous voulez générer un constructeur, vous devrez utiliser newtype:

newtype Address = Address { 
    street :: String, 
    city :: String, 
    state :: String 
} 

Ou bien, vous pouvez simplement vous débarrasser du constructeur dans votre code et il suffit d'utiliser le type d'enregistrement:

convertToAddress :: Array String -> Maybe Address 
convertToAddress [street, city, state] = Just { street: street, city: city, state: state } 
convertToAddress _ = Nothing