|>演算子の機能を誰かが説明できますか?このコードは参照から取得されました ここ :
let m = PairsMap.(empty |> add (0,1) "hello" |> add (1,0) "world")
それが何をするかはわかりますが、それ以外の方法で|>演算子を適用する方法がわかりません。
さらに言えば、Module。()構文が何をしているのかわかりません。それについての説明もいいでしょう。
Module.(e)
は_let open Module in e
_と同等です。スコープ内で物事を紹介するための省略構文です。
演算子_|>
_は、モジュールPervasives
でlet (|>) x f = f x
として定義されています。 (実際、これは外部プリミティブとして定義されており、コンパイルが簡単です。これはここでは重要ではありません。)連続する呼び出しをチェーンするのを容易にするのは逆アプリケーション関数です。それがなければ、あなたは書く必要があるでしょう
_let m = PairsMap.(add (1,0) "world" (add (0,1) "hello" empty))
_
より多くの括弧が必要です。
_|>
_演算子は、bashの_|
_のように見えます。
基本的な考え方は
_e |> f = f e
_
これは、実行順にアプリケーションを作成する方法です。
例として、次のことを回避するために使用できます(特にそうすべきではないと思います)。
_12 |> fun x -> e
_
の代わりに
_let x = 12 in e
_
Module.()
の場合、特定のモジュールの特定の関数を使用することです。
おそらく以前に_List.map
_を見たことがあるでしょう。もちろん、_open List
_を使用して、map
でのみ関数を参照することもできます。ただし、後で_open Array
_も参照する場合、map
は_Array.map
_を参照しているため、_List.map
_を使用する必要があります。
_|>
_演算子は、逆関数適用を表します。複雑に聞こえますが、関数(およびおそらくいくつかの追加パラメーター)を配置できることを意味します後適用する値。これにより、Unixパイプラインのようなものを構築できます。
_# let ( |> ) x f = f x;;
val ( |> ) : 'a -> ('a -> 'b) -> 'b = <fun>
# 0.0 |> sin |> exp;;
- : float = 1.
_
表記Module.(expr)
は、1つの式に対してモジュールを一時的に開くために使用されます。つまり、モジュール名の前に付けることなく、モジュールの名前を式で直接使用できます。