GHC重写规则是否知道识别语法糖?

Mas*_*tic 6 haskell ghc

例如,对于列表,如果我用LHS编写规则myFn [x],那么当程序员写入时它是否也能触发myFn (x:[])?或者我是否必须为每种可能的语法编写单独的规则?

Jon*_*ast 7

重写规则得到了消除.所以重写规则就像

{-# RULES
  "myFn/singleton"    forall x. myFn [x] = myOtherFn x
#-}
Run Code Online (Sandbox Code Playgroud)

将作为内部存储

forall x. myFn (x:[]) = myOtherFn x
Run Code Online (Sandbox Code Playgroud)

然后将其应用于程序的脱糖形式.(GHC中的所有优化都发生在程序的脱糖形式上).