私はthis F# wikibookを使っていますが、リンクされたページの関数の構成セクションに表示されているものに混乱しています。私が思い付くことができF#関数の構成が基本関数の型を変更しました
最も簡単な例は次のとおりです。
// int -> int
let f x = x + x
// float -> float
let g x = x + 1.0
これで結構です。私はこれらの関数の型を簡単に理解し、fsiでそれらを実行し、上記で取り上げた型の値を受け取り、返すことを確認できます。
私は次の行を追加すると、私は理解していない変更を参照してください。
// equivalent to f (g x)
let fog = f << g
私がこれを理解する方法では、fはintを期待しているので動作しませんが、gはfloatを返します。
このコンポジションをfsiで定義すると、予想されるタイプのエラーが発生します。これらをすべて.fsxファイルに入れてfsiにすべて送ると、fの署名はfloat - > floatになります。起こっ型推論の
- 範囲:
は、私は次のように混乱していますか?
- これらをファイルとfsiで定義することの違いは何ですか?
私は検索しようとしましたが、この時点でこれらの質問に対する回答を効果的に見つけることができません。あなたがRTFMに対処する部分を教えてくれるなら、私はRTFMに満足しています。
あなたの前提は正しいです。それは常に失敗するでしょう。私はそれをファイルに保存することで、あなたが言ったシナリオを再現することはできません。それを行うだけで、 '' float-> float''を推測することはできません。間違った方法でテストしているかもしれません。再度確認してください。 – Gustavo
申し訳ありませんが、私は私の例を間違えて更新しました。 fの定義に1があってはなりません。合成ステップがなければ、fは以下のように定義するとint - > intになります。合成関数では、float - > floatです。 let f x = x + x – greggyb
OK、今質問に答えることができます;) – Gustavo