誰かがこのF#式を私に説明できますか?
val augment: GameGrid -> points -> unit
val
キーワードはどういう意味ですか?
通常type -> type
、指定された型を返す関数を示しているというのは本当ですか?ではtype -> type -> type
、指定された型を返す関数を返す関数を示しているのでしょうか。
(「val」ビットは式ではありません。オフハンドでは、3つの異なるコンテキストで表示される可能性があると思います。
そしてそれらのどれも技術的に表現の文脈ではありません。)
タイプは確かに
A1 -> A2 -> R
は、A1を取り、A2を取り、Rを返す関数を返す関数を意味します。引数はカレーされているので、たとえば次のように読むとよいでしょう。
カリー化と部分適用について詳しく説明しています。
この出力をどのように取得しましたか?FSIでは?
Valは、値の定義を示すだけです。
たとえば、C#で次のように書いた場合
private void Foo(int i);
これをF#で記述します
val Foo : int -> unit
関連:これは、 ` type´type -> type -> type
を返す2つのパラメータ(type)を持つ関数です。
例えば
let plus a b = a + b
署名がありますint -> int -> int
。
関数を返す関数についてのあなたの考えは実際には正しいです。これは、カリー化と呼ばれる多くの関数型言語で非常に興味深い手法です。