我非常了解
data
, newtype
和type
之间的区别。我正在编写一个小脚本,将构建某种语法树。几乎所有类型都有一个构造函数。为了强制安全性(在Haskell中,多个“不同”的类型可能最终具有相同的类型),我避免使用type
。在这种情况下,我不关心懒惰/严格性,也不关心性能(这部分绝不是关键性能)。我主要关注风格。 我有三个选择:
- 只使用
data
。这感觉还可以,但我有许多只有一个参数的构造函数。代码看起来有些浪费...虽然我不在意性能增益,但这样做感觉就不对。 - 只使用
newtype
。这会导致在多个参数的情况下,元组变得非常丑陋。 - 混合使用
data
和newtype
,这样看起来不太一致并且稍微有点烦人。我宁愿所有类型以单一一致的方式声明。