1

誰かがこのF#式を私に説明できますか?

val augment: GameGrid -> points -> unit

valキーワードはどういう意味ですか?

通常type -> type、指定された型を返す関数を示しているというのは本当ですか?ではtype -> type -> type、指定された型を返す関数を返す関数を示しているのでしょうか。

4

2 に答える 2

4

(「val」ビットは式ではありません。オフハンドでは、3つの異なるコンテキストで表示される可能性があると思います。

  • 推論されたバインディングのタイプを説明するFSI(F#インタラクティブREPL)の出力
  • 署名(.fsi)ファイルで、let-boundモジュール値のタイプを記述します
  • 構造体/クラス定義(「明示的」構文)で、インスタンス変数を定義します

そしてそれらのどれも技術的に表現の文脈ではありません。)

タイプは確かに

A1 -> A2 -> R

は、A1を取り、A2を取り、Rを返す関数を返す関数を意味します。引数はカレーされているので、たとえば次のように読むとよいでしょう。

F#関数タイプ:タプルとカリー化を楽しむ

カリー化と部分適用について詳しく説明しています。

于 2009-05-13T17:01:42.757 に答える
3

この出力をどのように取得しましたか?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

関数を返す関数についてのあなたの考えは実際には正しいです。これは、カリー化と呼ばれる多くの関数型言語で非常に興味深い手法です。

于 2009-05-13T17:02:49.120 に答える