このHaskellプログラムでは、@@
は、関数本体f
の中でローカルにのみ定義したい中置演算子です。 (当然のことながら、私の実際のプログラムは、これ以上複雑であり、中置記法を使用するには十分な理由がある。)Haskellの局所中置演算子定義
infixl 5 @@
(@@) = undefined
f x = x @@ 5 where x @@ y = (x+1) * (y+1)
main = print (f 7)
しかし、私も(@@) = undefined
としてここに書かれたグローバルな定義を作る場合を除き、GHCは、と文句を言い@@
の固定署名には付随するバインディングがありません。演算子シンボルのグローバルな定義なしでこれを取得する方法はありますか?ただ、where
句で固定性宣言を置く
はあなた 'infixl 5 @@'、実際に現地に適用されている '(@@)'ですか?それは – jberryman
のように見えるバグでなければならないので、 – jberryman