在這個Haskell程序中,@@
是一箇中綴運算符,我只想在函數f
的本體中進行本地定義。 (很自然,我實際的程序是比這更復雜,並有一個很好的理由使用中綴表示法。)Haskell中的本地中綴運算符定義
infixl 5 @@
(@@) = undefined
f x = x @@ 5 where x @@ y = (x+1) * (y+1)
main = print (f 7)
但是,除非我也使全球的定義,在這裏寫爲(@@) = undefined
,GHC抱怨'@@
的固定性簽名缺少相應的綁定。'如果沒有運營商符號的全局定義,有沒有什麼辦法可以解決這個問題?
是您的'infixl 5 @@'實際上被應用到本地'(@@)'?因爲這應該是一個錯誤,我認爲 – jberryman
看起來不是 – jberryman