在这个Haskell程序中,@@
是一个中缀运算符,我希望仅在函数f
的主体内部定义它。 (自然而然地,我的实际程序比这更复杂,并且使用中缀表示法有很好的理由。)
infixl 5 @@
(@@) = undefined
f x = x @@ 5 where x @@ y = (x+1) * (y+1)
main = print (f 7)
然而,除非我也进行全局定义,这里写成(@@) = undefined
,否则GHC会抱怨“对于@@
的结合性签名缺少相应的绑定”。有没有不需要操作符符号的全局定义就可以解决这个问题呢?
infixl 5 @@
是否真正应用于本地的(@@)
上了?因为我认为那应该是一个 bug。 - jberryman