問題タブ [value-restriction]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
f# - F# コンパイラ エラー FS0030、値の制限に関する問題
私は StrangeLights の宣伝文を読み、Expert F# (page 119) からの一節を読みましたが、それらが私のコードにどのように適用されるかわかりません:
私のテストでは、少しの許容範囲で、float 間の同等性をチェックしたいと考えています。すべてを測定単位に変換していますが、「一般的」になりたいです。
次に、これを使用して、さまざまな「タイプ」のフロートで同等性をチェックしたり、カリー化してカスタムのものを作成したりできます。
しかし、次のメッセージが表示されます。
関数にするためにこれ以上できることがわかりません-暗黙のパラメーターが表示されません。
調子はどう?
generics - 部分的に適用された関数をジェネリックに保つ
などの機能を部分的に適用bprintf
し、初期使用に基づいて制限されないようにすることはできますか?
私は次のことをしたいと思います:
f# - F# 値の制限
F# での値の制限に関するトレッドをすべて読みましたが、まだ理解できません。次のコードがあります。
そしてコンパイラはエラーを表示します:
誰でも私を助けることができますか?どうもありがとうございました;)
generics - 関数をジェネリックにする方法
csvListまたはその部分的に適用されたヘルパーlistIntoJsonArrayまたはlistIntoJsonObjectを汎用にするための魔法のソースが見つからないようです。
助けてくれてありがとう。
f# - 値制限エラーを取り除く
OCamlで
F# で
値制限エラーを引き起こさずに空のリストを引数として渡すにはどうすればよいですか?
f# - さらに別の値制限の質問
次のコードSeq.generateUnique
では、タイプが((Assembly -> seq<Assembly>) -> seq<Assembly> -> seq<Assembly>)
.
ジェネリックにしたいのですが、使用法とは別にファイルに入れると、値制限エラーが発生します。
値制限。'_b :> seq<'_a> および '_c : > seq<'_a> 'generateUnique' への引数を明示的にするか、ジェネリックにするつもりがない場合は、型注釈を追加します。
明示的な型パラメーター ( let generateUnique<'T> = ...
) を追加するとエラーは解消されますが、異なる結果が返されるようになりました。
型パラメーターなしの出力 (望ましい/正しい動作):
そして:
行動が変わるのはなぜ?関数をジェネリックにして、目的の動作を実現するにはどうすればよいですか?
f# - F# でジェネリック パラメーターを宣言するにはどうすればよいですか?
次のコードがあるとします。
最後の行で次のエラーが表示されます。This expression was expected to have type int but here has type string
私は次のことがうまくいくかもしれないと思ったが、うまくいかない:
私の質問は、表示パラメーターが関数内で汎用的なままになるように NotWorking 関数を定義するにはどうすればよいですか?
list - 空のリストでのF#値の制限
私はF#関数を持っています:
リスト内の偶数のインデックスにあるすべての要素を削除します。removeEven ['1';'2';'3']
私がそうすることになっているように、私がリストにいくらかの入力を与えるならば、それは働き['1';'3']
ます。しかし、パラメータとして空のリストを挿入すると、次のエラーが発生します。
stdin(78,1):エラーFS0030:値の制限。値「it」はジェネリック型であると推測されています
val it:'_a list' it'を単純なデータ用語として定義するか、明示的な引数を使用して関数にするか、一般的なものにするつもりがない場合は、型注釈を追加します。
助けて、誰か?
f# - 一般的なパラメータがない場合の値の制限
let makeElem
次のコードで値制限エラーが発生します。
elemCreator
から返された無名関数にジェネリックパラメーターがない場合、なぜ値制限エラーが発生するのですか?
コンパイラーは、推定されたmakeElemのタイプはであると述べてい(string -> 'a -> XmlNode)
ます。'a
しかし、なぜ私がそれを宣言したかのように2番目のパラメーターを推測するのobj
ですか?