![](/img/trans.png)
[英]Why is the definition of null function in Haskell Prelude so strange?
[英]haskell prelude : definition of seq
如您在seq
上的Haskell Wiki条目中所见, seq
函数必须满足以下两个方程式:
⊥ `seq` b = ⊥
a `seq` b = b
(其中⊥
是未定义的值,这是非终止函数应用程序或诸如hd []
和undefined
逻辑求值)
您的定义显然不满足第一个方程式。
seq
的典型用例是在评估第二个参数之前强制评估第一个参数(以弱头法线形式)。 (尽管严格来讲, seq
不能保证这一点;请再次参见Wiki文章)
据我所知,在没有任何编译器扩展(例如-XBangPatterns
情况下,无法在纯Haskell中定义此-XBangPatterns
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.