可以用seq来定义pseq吗?
据我所知, seq ab评估(力) a和b返回前b 。 它并不保证首先评估a 。
pseq ab计算a第一,然后评估/返回b 。
现在考虑以下几点:
xseq a b = (seq a id) b
函数应用程序需要先评估左操作数(以获得lambda表单),并且它不能在进入函数之前盲目评估右操作数,因为这会违反Haskell的非严格语义。
因此(seq a id) b必须首先评估seq a id ,这会强制a和id (以某种未指定的顺序(但评估id不做任何事情)),然后返回id b (即b ); 因此xseq ab计算a之前b 。
是xseq的有效实施pseq ? 如果不是,上述参数有什么问题(是否可以根据seq定义pseq )?
