В этой программе Haskell @@
- это инфиксный оператор, который я хочу определить только локально внутри тела функции f
. (Естественно, моя фактическая программа сложнее, чем это, и есть веская причина использовать нотацию infix.)
infixl 5 @@
(@@) = undefined
f x = x @@ 5 where x @@ y = (x+1) * (y+1)
main = print (f 7)
Однако, если я также не сделаю глобальное определение, написанное здесь как (@@) = undefined
, GHC жалуется, что "подпись четности для @@
отсутствует сопровождающая привязка". Есть ли способ обойти это без глобального определения символа оператора?