julia> test(5, 2)()
ERROR: DimensionMismatch: inconsistent array dimensions
Stacktrace:
[1] logpdf
@ ~/.julia/packages/Distributions/yoypU/src/common.jl:247 [inlined]
[2] logpdf_with_trans(d::DiagNormal, x::Vector{Real}, transform::Bool)
@ Bijectors ~/.julia/packages/Bijectors/hEXu9/src/Bijectors.jl:136
[3] assume(rng::Random._GLOBAL_RNG, sampler::SampleFromPrior, dist::DiagNormal, vn::VarName{:y, Setfield.IdentityLens}, vi::UntypedVarInfo{DynamicPPL.Metadata{Dict{VarName, Int64}, Vector{Distribution}, Vector{VarName}, Vector{Real}, Vector{Set{DynamicPPL.Selector}}}, Float64})
@ DynamicPPL ~/.julia/packages/DynamicPPL/zPOYL/src/context_implementations.jl:231
[4] tilde_assume
@ ~/.julia/packages/DynamicPPL/zPOYL/src/context_implementations.jl:49 [inlined]
[5] tilde_assume
@ ~/.julia/packages/DynamicPPL/zPOYL/src/context_implementations.jl:46 [inlined]
[6] tilde_assume
@ ~/.julia/packages/DynamicPPL/zPOYL/src/context_implementations.jl:31 [inlined]
[7] tilde_assume!!(context::SamplingContext{SampleFromPrior, DefaultContext, Random._GLOBAL_RNG}, right::DiagNormal, vn::VarName{:y, Setfield.IdentityLens}, vi::UntypedVarInfo{DynamicPPL.Metadata{Dict{VarName, Int64}, Vector{Distribution}, Vector{VarName}, Vector{Real}, Vector{Set{DynamicPPL.Selector}}}, Float64})
@ DynamicPPL ~/.julia/packages/DynamicPPL/zPOYL/src/context_implementations.jl:117
[8] macro expansion
@ ~/.julia/packages/DynamicPPL/zPOYL/src/compiler.jl:539 [inlined]
[9] linear(__model__::Model{typeof(linear), (:x, :θ, :intercept), (), (), Tuple{Vector{Float64}, Int64, Int64}, Tuple{}, DefaultContext}, __varinfo__::UntypedVarInfo{DynamicPPL.Metadata{Dict{VarName, Int64}, Vector{Distribution}, Vector{VarName}, Vector{Real}, Vector{Set{DynamicPPL.Selector}}}, Float64}, __context__::SamplingContext{SampleFromPrior, DefaultContext, Random._GLOBAL_RNG}, x::Vector{Float64}, θ::Int64, intercept::Int64)
@ Main ~/git/jasa2-paper/code/semibeta.jl:50
[10] macro expansion
@ ~/.julia/packages/DynamicPPL/zPOYL/src/model.jl:593 [inlined]
[11] _evaluate!!(model::Model{typeof(linear), (:x, :θ, :intercept), (), (), Tuple{Vector{Float64}, Int64, Int64}, Tuple{}, DefaultContext}, varinfo::UntypedVarInfo{DynamicPPL.Metadata{Dict{VarName, Int64}, Vector{Distribution}, Vector{VarName}, Vector{Real}, Vector{Set{DynamicPPL.Selector}}}, Float64}, context::SamplingContext{SampleFromPrior, DefaultContext, Random._GLOBAL_RNG})
@ DynamicPPL ~/.julia/packages/DynamicPPL/zPOYL/src/model.jl:576
[12] macro expansion
@ ~/.julia/packages/DynamicPPL/zPOYL/src/submodel_macro.jl:244 [inlined]
[13] macro expansion
@ ~/.julia/packages/DynamicPPL/zPOYL/src/compiler.jl:539 [inlined]
[14] test(__model__::Model{typeof(test), (:n1, :n2), (), (), Tuple{Int64, Int64}, Tuple{}, DefaultContext}, __varinfo__::UntypedVarInfo{DynamicPPL.Metadata{Dict{VarName, Int64}, Vector{Distribution}, Vector{VarName}, Vector{Real}, Vector{Set{DynamicPPL.Selector}}}, Float64}, __context__::SamplingContext{SampleFromPrior, DefaultContext, Random._GLOBAL_RNG}, n1::Int64, n2::Int64)
@ Main ~/git/jasa2-paper/code/semibeta.jl:58
[15] macro expansion
@ ~/.julia/packages/DynamicPPL/zPOYL/src/model.jl:593 [inlined]
[16] _evaluate!!
@ ~/.julia/packages/DynamicPPL/zPOYL/src/model.jl:576 [inlined]
[17] evaluate_threadunsafe!!
@ ~/.julia/packages/DynamicPPL/zPOYL/src/model.jl:551 [inlined]
[18] evaluate!!
@ ~/.julia/packages/DynamicPPL/zPOYL/src/model.jl:504 [inlined]
[19] evaluate!! (repeats 2 times)
@ ~/.julia/packages/DynamicPPL/zPOYL/src/model.jl:515 [inlined]
[20] evaluate!!
@ ~/.julia/packages/DynamicPPL/zPOYL/src/model.jl:523 [inlined]
[21] (::Model{typeof(test), (:n1, :n2), (), (), Tuple{Int64, Int64}, Tuple{}, DefaultContext})()
@ DynamicPPL ~/.julia/packages/DynamicPPL/zPOYL/src/model.jl:475
[22] top-level scope
@ REPL[13]:1
which makes it really hard to find the root cause of the error unless you know what's going on in the internals (all manual checking for whether the arrays match is going fine!).
I guess this is the same as in any place when you use the same LHS twice, but isn't there some way to fail this more informatively?
Consider
test(5, 5)()works, but probably erroneously. OTOH,test(5, 2)()fails withwhich makes it really hard to find the root cause of the error unless you know what's going on in the internals (all manual checking for whether the arrays match is going fine!).
I guess this is the same as in any place when you use the same LHS twice, but isn't there some way to fail this more informatively?