Próbuję dodać metodę do klasy DenseVector, aby móc odróżnić wektor n razy. Poniższa nie wydają się działać jako rodzaj wnioskowania skarży się, że typ Vector nie jest zgodny z typem DenseVector:Problemy z dodawaniem rozszerzenia do typu 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 ]
w powyższym jest przyczyną problemów. Dlaczego jest on wywiedziony jako Vector, a nie DenseVector, co jest przekazywane do funkcji? Czy mój sposób dodania metody rozszerzenia jest poprawny?
Czy możesz uwzględnić w swoim wydaniu, które przestrzenie nazw masz otwarte? – Gustavo
@Gustavo Moje testy pokazują, że prawdopodobnie ma 'MathNet.Numerics.LinearAlgebra.Double' i ' MathNet.Numerics.LinearAlgebra' open. Ma także pakiet rozszerzeń FSharp dla MathNet. – Ringil
Przepraszamy, nie uwzględniamy tych. Właśnie dokonałem edycji. –