Haskell中的本地中缀运算符定义

时间:2017-01-05 16:14:37

标签: haskell

在这个Haskell程序中,SecondLevelGroupBoxStyle是一个中缀运算符,我只想在函数体@@中本地定义。 (当然,我的实际程序比这更复杂,并且有充分的理由使用中缀表示法。)

f

然而,除非我也制作全球定义,在此写成infixl 5 @@ (@@) = undefined f x = x @@ 5 where x @@ y = (x+1) * (y+1) main = print (f 7) ,GHC抱怨'(@@) = undefined的固定签名缺少附带的绑定。如果没有运算符符号的全局定义,有没有办法绕过这个?

1 个答案:

答案 0 :(得分:16)

将固定性声明放在​​where子句中似乎工作正常:

f x = x @@ 5 where
    infixl 5 @@
    x @@ y = (x+1) * (y+1)