【发布时间】:2016-10-01 17:05:57
【问题描述】:
我正在尝试向 DenseVector 类添加一个方法,以便能够对向量进行 n 次差分。以下似乎不起作用,因为类型推断抱怨 Vector 类型与 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 传递给函数的内容?另外,我添加扩展方法的方式正确吗?
【问题讨论】:
-
你能在你的 repro 中包含你打开了哪些命名空间吗?
-
@Gustavo 我的测试表明他可能打开了
MathNet.Numerics.LinearAlgebra.Double和MathNet.Numerics.LinearAlgebra。他还拥有 MathNet 的 FSharp 扩展包。 -
抱歉忘了包括这些。刚刚进行了编辑。
标签: f# mathnet-numerics