6

私はちょうど F# を学んでいて、tryfsharp.orgで遊んでいるときに、このコードを変更すると次のことに気付きました。

[0..100]
|> List.sum

["A"; "B"; "D"]
|> List.sum

次のエラーが表示されます。

The type 'string' does not support the operator 'get_Zero'

(これはブラウザで実行/修正できるスクリプトですが、私にとってはIEでしか機能しないようです!)

List.sum の定義を確認したところ、この型には、Zero という静的メンバーが必要であることが示されています。これはエラーを説明しているようです。int! で Zero という名前のメンバーが見当たらないという事実を除いては。

そう; int に適用されるこの Zero メンバーはどこにありますか? int は単なる .NET System.Int32 (静的ゼロ プロパティを持っていないようです) であると書かれている docsint.でも、と入力してもインテリセンスで見ることができません。

(注:エラーには「メンバー」ではなく「オペレーター」と表示されます。これは関連している可能性があります。ただし、List.sum 定義は単に「メンバー」と表示されています)。

4

2 に答える 2

3

一般的に言えば、F# 仕様は、この種の情報を探すのに最適な場所です。これはセクション 14.5.4.1 (メンバー制約のソリューションのシミュレーション) でカバーする必要があると思いますがZero、実際にはそこで言及されていないようです。これはほぼ確実に仕様のバグです。

于 2013-10-29T13:55:57.280 に答える