2015-06-12 2 views
2

Я хотел бы создать вложенный тип кортежа, который может содержать себя или конкретный тип, который он содержит.Как создать рекурсивный типализм в julia?

Так что я подумал:

typealias NestedTuple{T} Tuple{Union(T,NestedTuple{T}),Union(T,NestedTuple{T})} 

Однако это происходит с ошибкой

LoadError: UndefVarError: NestedTuple not defined 

Как этот вид typealias обычно делается?

(я в Юли 0,4)

+0

не тихо, но этот вопрос: https: // GitHub .com/JuliaLang/джулия/вопросы/269 –

ответ

1

доза эту работу за то, что вы делаете?

typealias NestedTuple0{N,T} Tuple{Union(T,N),Union(T,N)} 
typealias NestedTuple{T} NestedTuple0{NestedTuple0{T},T} 

Примечание: я только в состоянии попробовать это в 036, а не 04


An exmple использования:

function rnt(p) 
    np = 0.95*p 
    a=rand() <p ? rnt(np) : 1 
    b=rand() <p ? rnt(np) : 2 
    (a,b) 
end 

x=rnt(1.0) 

typeof(x)<:NestedTuple{Int64} #returns true 
Смежные вопросы