在这个Haskell程序中,SecondLevelGroupBoxStyle
是一个中缀运算符,我只想在函数体@@
中本地定义。 (当然,我的实际程序比这更复杂,并且有充分的理由使用中缀表示法。)
f
然而,除非我也制作全球定义,在此写成infixl 5 @@
(@@) = undefined
f x = x @@ 5 where x @@ y = (x+1) * (y+1)
main = print (f 7)
,GHC抱怨'(@@) = undefined
的固定签名缺少附带的绑定。如果没有运算符符号的全局定义,有没有办法绕过这个?
答案 0 :(得分:16)
将固定性声明放在where
子句中似乎工作正常:
f x = x @@ 5 where
infixl 5 @@
x @@ y = (x+1) * (y+1)