我看过很多会谈/阅读博客文章,你应该有严格的字段,data
以避免各种性能问题,例如:
data Person = Person { personName :: !Text , personBirthday :: !UTCTime }
这对我来说很有意义.由于对该数据的函数操作是惰性的,因此不会牺牲可组合性.
但是,如果我添加一个Maybe
字段:
data Person = Person { personName :: !Text , personBirthday :: !UTCTime , personAddress :: !(Maybe Address) }
我将懒惰引入数据结构,毕竟Maybe
是一个控制结构.是不是可以毫无价值地躲在Just
构造函数后面?
但是,有严格Maybe
的strict
或通过strict-base-types
.但是根据反向依赖(strict,strict-base-types),它们并没有被广泛使用.
所以问题是:为什么Maybe
在非控制数据定义中应该或不应该使用strict ?