Versiyon: itibaren Julia v0.4 danAşamalı programlama - Jake Bolewski konuşması
Referans (I 0.5.0-dev + 433 (2015/09/29 15:39 UTC) kullanın): Jake Bolewski: Staged programming in Julia
sorun: StaticVec
ilgili Jakes Bolewski konuşmasını izledikten sonra ben length
fonksiyonu ile örneğin arkasındaki fikri anlayamadım.
julia> type StaticVec{T,N}
vals::Vector{T}
end
julia> StaticVec(T,vals...) = StaticVec{T,length(vals)}([vals...])
StaticVec{T,N}
julia> v= StaticVec(Float64,1,2,3)
StaticVec{Float64,3}([1.0,2.0,3.0])
length
Sigara sahnelenen:
julia> function Base.length{T,N}(v::StaticVec{T,N})
N
end
length (generic function with 58 methods)
julia> code_llvm(length, (StaticVec{Float64,3},))
define i64 @julia_length_21889(%jl_value_t*) {
top:
ret i64 3
}
ve length
sürümü
julia> @generated function Base.length{T,N}(v::StaticVec{T,N})
:(N)
end
length (generic function with 58 methods)
julia> code_llvm(length, (StaticVec{Float64,3},))
define i64 @julia_length_21888(%jl_value_t*) {
top:
ret i64 3
}
aynı LLVM kodu vermek düzenledi.
Aşamalı programlamanın ardındaki fikri anlıyorum, ancak bu örnekte konuşmacının niyetini anlamıyorum. Bunu bana açıklayan var mı?
Teşekkür ederim Stefan. Örneğiniz oldukça ayrıntılı olsa da ve örnek olarak dokümantasyondan örnek almamıza rağmen, cevabınız benim tahminimi doğruladı. –