DenseVector 클래스에 벡터를 n 번 차이가 나는 메서드를 추가하려고합니다. 다음은 형식 유추는 타입 벡터 형식 DenseVector와 호환되지 않습니다 불평으로 작동하지 않는 것 : 위의 원인이되는 문제에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 ]
합니다. 왜 그것이 Vector로 추론되고 DenseVector가 아닌 것은 그 함수에 전달되는 것입니까? 또한 확장 메서드를 올바르게 추가하는 방법은 무엇입니까? 모든 Vector<'T>
의 GetSlice
방법을 정의하는 extension method이 Vector<'T>
아닌 DenseVector
반환하기 때문에 문제에 대한
열려있는 네임 스페이스를 repro에 포함 할 수 있습니까? – Gustavo
@Gustavo 테스트 결과, MathNet.Numerics.LinearAlgebra.Double'과'MathNet.Numerics.LinearAlgebra'이 인 것으로 나타났습니다. 그리고 그는 MathNet을위한 FSharp 확장 패키지를 가지고 있습니다. – Ringil
죄송합니다. 방금 편집했습니다. –