对于以下代码,如何指定功能storePhone将哪个电话号码类型(HomePhone或WorkPhone)存储为Int?如何使用代数数据类型的类型同义词?
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
它甚至编译?编译器可以为您提供很多有用的错误和警告信息。 – Yuras 2013-02-09 12:05:34