単純な配列追加関数を作成しようとしています。唯一の複雑さは、それを一般的にしようとした私の試みから来ています。C#には値型の型制約がないことは知っていますが、F#では明示的なメンバー制約で機能させることができると理解しています。これが私の試みです:
let Add<'T when 'T : (member (+) : 'T -> 'T -> 'T)> (A : 'T[]) (B : 'T[]) =
Array.init A.Length (fun i -> A.[i] + B.[i])
コンパイラーは3つのエラーをリストします。1つはA.[i]、1つは+記号、もう1つはB. [i]ですが、私の推測では、これらはすべて同じです。
A type parameter is missing a constraint
'when ^T : (static member ( + ) : ^T * ^T -> ^?6069)'
これは単なる構文上の問題だと確信していますが、誰かが私を正しい場所に向けることができますか?
ps:これを行うための別の/より簡単な方法はありますか、それともこれを機能させるための正しい方法ですか?