据我所知,我认为id1和id2来自类型类并且id1'和id2'不是没有任何区别.我正在使用最新的Haskell平台(GHC版本7.0.4和现在的7.4.1)运行"ghc Rewrite",我希望1也能解雇.
$ ghc Rewrite
[1 of 1] Compiling RewriteProblems ( Rewrite.hs, Rewrite.o )
Rule fired: rewrite/ez'
Rule fired: rewrite/to1'
Rule fired: rewrite/ez
Rule fired: rewrite/ez
Rule fired: Class op id2
Rule fired: Class op id2
Run Code Online (Sandbox Code Playgroud)
这个例子:
{-# OPTIONS_GHC -O -ddump-rule-firings #-}
module RewriteProblems where
{-# RULES
"rewrite/ez" forall a. id1 a = RDUnit
"rewrite/to1" forall a. id2 (id2 a) = id1 a
"rewrite/ez'" forall a. id1' a = RDUnit
"rewrite/to1'" forall a. id2' (id2' a) = id1 a
#-} …Run Code Online (Sandbox Code Playgroud) haskell ×1