如何在Julia中将向量用作类型参数

如何在Julia中将向量用作类型参数,julia,Julia,这与我的类似,但有点复杂 在我定义一个以关联整数作为参数的类型Intp{p}之前。现在我想使用向量作为参数定义一个类型 以下是我能写的最接近我想要的内容: type Extp{g::Vector{T}} c::Vector{T} end 换句话说,Extp应该根据向量g来定义,我希望内容c是另一个向量,它的条目应该与g的条目类型相同 这个不行 问题1:我认为我不能在类型参数中使用:: 问题2:我可以通过使g和c的类型任意化,并确保向量中的类型在构造函数中匹配来解决这个问题。但是,即使

这与我的类似,但有点复杂

在我定义一个以关联整数作为参数的类型Intp{p}之前。现在我想使用向量作为参数定义一个类型

以下是我能写的最接近我想要的内容:

type Extp{g::Vector{T}}
     c::Vector{T}
end
换句话说,Extp应该根据向量g来定义,我希望内容c是另一个向量,它的条目应该与g的条目类型相同

这个不行

问题1:我认为我不能在类型参数中使用::

问题2:我可以通过使g和c的类型任意化,并确保向量中的类型在构造函数中匹配来解决这个问题。但是,即使我把所有的东西都拿出来用

type Extp{g}
     c
end
它似乎还是不喜欢这样。当我试着用我想要的方式使用它时

julia>Extp{[1,1,1]}([0,0,1])

错误:type:apply_type:在Extp中,应为类型{T,以下是:

抽象类型和具体类型都可以由其他类型参数化 和某些其他值(当前为整数、符号、布尔值和 元组)


因此,您的编辑是正确的。Julia问题页面上出现了这一点(例如,和我在一些讨论中发现的两个相关问题),所以这可能会在将来发生变化-我猜在
v0.4
中不会发生变化。它必须是一个不可变的类型才有意义,所以不是
Vector
。我不确定我是否理解您的应用程序,但
元组能否工作?

在Julia 0.4中,您可以使用任何“比特类型”作为类型的参数。但是,向量不是位类型,因此这不起作用。最接近的模拟是使用元组:例如,
(3.2,1.5)
是完全有效的类型参数


从某种意义上说,向量(或任何可变对象)与类型是对立的,在运行时无法更改。

这是为了构造多项式商环。现有的向量{T}足以表示具有任意类型系数的多项式。但是,给定多项式g(X)(表示为向量),我想做一个类型,其他多项式会自动约化为模g(X)。问题是,我想使左T任意,这样,例如,我可以使多项式的多项式模g(X),模多项式的多项式h(X)模g(X)。所以,如果你知道抽象代数,我将扩展到GF(q)=GF(p)[X]/(g(X)),然后扩展到GF(q)[X]/(h(X))=(GF(p)[X]/(g(X)))[X]/(h(X))。g(X)和h(X)不可变是可以的,但h(X)的系数不是不可变的。它必须是向量的元组。它们可以是用户定义类型的元组吗?我试着使类型T{tuple}和T{(1,2,3)}初始化,但T{(Intp{2}(1),Intp{(2}没有初始化)(其中Intp{p}是不可变的Intp{p}