DenseVectorクラスにメソッドを追加して、ベクトルをn回差異させようとしています。上記の問題を引き起こしている中DenseVectorタイプに拡張機能を追加する際の問題
open System
open System.IO
open Deedle
open MathNet.Numerics
open MathNet.Numerics.LinearAlgebra
open MathNet.Numerics.LinearAlgebra.Double
open MathNet.Numerics.Distributions
[<Extension>]
type DenseVector with
member this.diffVector (v : DenseVector) (n : int) =
let rec run (v : DenseVector) (n : int) =
match n with
| 0 -> v
| _ -> run (v.[ 1 .. v.Count-1 ] - v.[ 0 .. (v.Count-1)-1 ]) (n - 1)
run v n
v.[ 0 .. (v.Count-1)-1 ]
:次は、型推論は、タイプがベクトル型DenseVectorと互換性がないと文句を言いよう動作するようには思えません。なぜそれがVectorに推論され、DenseVectorではなく、それが関数に渡されるのでしょうか?また、拡張メソッドを追加する私の方法は正しいですか?すべてVector<'T>
ためGetSlice
方法を定義extension methodがVector<'T>
ないDenseVector
返しますので、あなたの問題のため
開いている名前空間をreproに含めることはできますか? – Gustavo
@Gustavo私のテストによれば、彼はおそらく 'MathNet.Numerics.LinearAlgebra.Double'と ' MathNet.Numerics.LinearAlgebra'を開いています。また、MathNet用のFSharp拡張パッケージも用意されています。 – Ringil
申し訳ありませんが、それらを含めるのを忘れてしまった。ちょうど編集をしました。 –