对于以下代码,如何指定函数 storePhone 将 Int 存储为的电话号码类型(HomePhone 或 WorkPhone)?
type HomePhone = Int
type WorkPhone = Int
data Phone = HomePhone
| WorkPhone
storePhone :: int -> Phone
storePhone num = num
main :: IO ()
main = print $ storePhone 12345678
这个问题是我正在做的一个附带项目的问题的简化版本。我有一个将文件解析为相关数据类型的模块(也就是示例中的电话类型)。所有数据都是 Double 但语义不同。在另一个模块中,我有使用数据的方法。每种方法都将数据类型(又名 HomePhone、WorkPhone)的不同排列作为参数。我本可以制作 HomePhone 和 WorkPhone 数据类型甚至是新类型,但它会使使用数据的方法看起来很混乱,有很多模式匹配和东西。所以只是想知道我是否可以简化数据类型(又名电话),以便它更优雅一点并且仍然类型安全。干杯! 我想我应该做以下事情?
type HomePhone = Int
type WorkPhone = Int
data Phone = HomePhone HomePhone
| WorkPhone WorkPhone