Haskell 小ネタ: 中置
最近同期とした話。
Haskell では任意の関数をバッククォート(`)で囲むことで中置の演算子にできる。例えば、
div 6 2
は、
6 `div` 2
のように書ける。
では、引数が3個以上あったらどうなるだろうか? 例えば、
foldr (+) 0 [1,2]
はどのように書けるのだろうか?(あるいは、使えないのか?)
...
...
...
答えは、
((+) `foldr` 0) [1,2]
のようになる。1,2番目の引数の間に入れるのは同じだが、丸括弧で囲むことになるという点が注目である。Haskell では関数がカリー化されていることと、関数適用の方が優先順位が高いことを思い出せばわかると思う。