問題タブ [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.

0 投票する
1 に答える
758 参照

f# - F# コンパイラ エラー FS0030、値の制限に関する問題

私は StrangeLights の宣伝文を読み、Expert F# (page 119) からの一節を読みましたが、それらが私のコードにどのように適用されるかわかりません:

私のテストでは、少しの許容範囲で、float 間の同等性をチェックしたいと考えています。すべてを測定単位に変換していますが、「一般的」になりたいです。

次に、これを使用して、さまざまな「タイプ」のフロートで同等性をチェックしたり、カリー化してカスタムのものを作成したりできます。

しかし、次のメッセージが表示されます。

関数にするためにこれ以上できることがわかりません-暗黙のパラメーターが表示されません。

調子はどう?

0 投票する
3 に答える
1508 参照

generics - 部分的に適用された関数をジェネリックに保つ

などの機能を部分的に適用bprintfし、初期使用に基づいて制限されないようにすることはできますか?

私は次のことをしたいと思います:

0 投票する
1 に答える
1766 参照

f# - F# 値の制限

F# での値の制限に関するトレッドをすべて読みましたが、まだ理解できません。次のコードがあります。

そしてコンパイラはエラーを表示します:

誰でも私を助けることができますか?どうもありがとうございました;)

0 投票する
3 に答える
189 参照

generics - 関数をジェネリックにする方法

csvListまたはその部分的に適用されたヘルパーlistIntoJsonArrayまたはlistIntoJsonObjectを汎用にするための魔法のソースが見つからないようです。

助けてくれてありがとう。

0 投票する
2 に答える
341 参照

f# - 値制限エラーを取り除く

OCamlで

F# で

値制限エラーを引き起こさずに空のリストを引数として渡すにはどうすればよいですか?

0 投票する
2 に答える
271 参照

f# - さらに別の値制限の質問

次のコードSeq.generateUniqueでは、タイプが((Assembly -> seq<Assembly>) -> seq<Assembly> -> seq<Assembly>).

ジェネリックにしたいのですが、使用法とは別にファイルに入れると、値制限エラーが発生します。

値制限。'_b :> seq<'_a> および '_c : > seq<'_a> 'generateUnique' への引数を明示的にするか、ジェネリックにするつもりがない場合は、型注釈を追加します。

明示的な型パラメーター ( let generateUnique<'T> = ...) を追加するとエラーは解消されますが、異なる結果が返されるようになりました。

型パラメーターなしの出力 (望ましい/正しい動作):

そして:

行動が変わるのはなぜ?関数をジェネリックにして、目的の動作実現するにはどうすればよいですか?

0 投票する
2 に答える
436 参照

f# - F# でジェネリック パラメーターを宣言するにはどうすればよいですか?

次のコードがあるとします。

最後の行で次のエラーが表示されます。This expression was expected to have type int but here has type string

私は次のことがうまくいくかもしれないと思ったが、うまくいかない:

私の質問は、表示パラメーターが関数内で汎用的なままになるように NotWorking 関数を定義するにはどうすればよいですか?

0 投票する
1 に答える
2833 参照

list - 空のリストでのF#値の制限

私はF#関数を持っています:

リスト内の偶数のインデックスにあるすべての要素を削除します。removeEven ['1';'2';'3']私がそうすることになっているように、私がリストにいくらかの入力を与えるならば、それは働き['1';'3']ます。しかし、パラメータとして空のリストを挿入すると、次のエラーが発生します。

stdin(78,1):エラーFS0030:値の制限。値「it」はジェネリック型であると推測されています

val it:'_a list' it'を単純なデータ用語として定義するか、明示的な引数を使用して関数にするか、一般的なものにするつもりがない場合は、型注釈を追加します。

助けて、誰か?

0 投票する
3 に答える
217 参照

f# - 一般的なパラメータがない場合の値の制限

let makeElem次のコードで値制限エラーが発生します。

elemCreatorから返された無名関数にジェネリックパラメーターがない場合、なぜ値制限エラーが発生するのですか?

コンパイラーは、推定されたmakeElemのタイプはであると述べてい(string -> 'a -> XmlNode)ます。'aしかし、なぜ私がそれを宣言したかのように2番目のパラメーターを推測するのobjですか?

0 投票する
1 に答える
216 参照

f# - MergeSort 関数で値の制限が発生するのはなぜですか?

リストに非常に単純なMergeSort実装があります。

しかし、F# Interactive で任意の入力をテストしようとすると、次のようになります。

値制限エラーが発生しました:

エラー FS0030: 値の制限。値 'xs' はジェネリック型 val を持つと推測されています xs : '_a list when '_a : comparison 'xs' を単純なデータ項として定義するか、明示的な引数を持つ関数にするか、意図しない場合はジェネリックにするには、型注釈を追加します。

なぜそれが起こるのですか?それを修正する簡単な方法は何ですか?