2017-09-25 112 views
2

我试图基于数据的阵列上创建一个记录来创建记录,该功能是这样的:如何使用值构造中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 

在这里,我试图创造的纪录使用地址值构造但在编译时,它会引发错误类型地址:

Unknown data constructor Address 

回答

4

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