私はいくつかの機能要素を特徴とするカスタム言語を書いています。私がどこかで立ち往生しているとき、私は通常、Haskellがそれをどのように行うかをチェックします。しかし今回は、Haskellに与える例を考えると、問題は少し複雑です。
これがその方法です。
次の行があるとしましょう
a . b
Haskellで。明らかに、aとbの2つの関数を構成しています。しかし、関数aが別の2つの関数をパラメーターとして受け取った場合はどうなるでしょうか。での動作を停止しているのは何ですか。とb?角かっこで囲むことができますが、式は関数、接頭辞1に評価され、接頭辞関数は中置関数よりも優先されるため、違いはありません。
もし、するなら
(+) 2 3 * 5
たとえば、17ではなく25を出力します。
基本的に私が求めているのは、前のプレフィックス関数の前に中置関数を動作させたい場合、Haskellはどのメカニズムを使用するのかということです。
それで。「a」がパラメータとして2つの関数をとる関数である場合。Haskellが解釈するのをどのように止めますか
a . b
「。とbを関数aに適用する」と解釈し、「関数aとbを合成する」と解釈します。