Skip to content

Instantly share code, notes, and snippets.

@devmotion
Created August 30, 2021 14:54
Show Gist options
  • Save devmotion/077af8c2a35d49964fdde7d1b3a593ea to your computer and use it in GitHub Desktop.
Save devmotion/077af8c2a35d49964fdde7d1b3a593ea to your computer and use it in GitHub Desktop.
julia> using DynamicPPL
julia> @model function demo4(n, ::Type{TV}=Vector{Float64}) where {TV}
m ~ Normal()
x = TV(undef, n)
@show __varinfo__
for i in eachindex(x)
x[i] ~ Normal(m, 1.0)
end
end
(type-error car cons ())
unexpected error: #0 (caddr (:: (curly Type TV)))
#1 (resolve-expansion-vars-
(kw (:: (curly Type TV)) (curly Vector Float64))
((n . |#118#n|) (|#unused#| . |#119##unused#|) (TV . |#120#TV|))
#<julia: DynamicPPL> () #t)
#2 (resolve-in-function-lhs
(call (escape demo4) (parameters) n
(kw (:: (curly Type TV)) (curly Vector Float64)))
((n . |#118#n|) (|#unused#| . |#119##unused#|) (TV . |#120#TV|))
#<julia: DynamicPPL> () #f)
#3 (resolve-in-function-lhs
(where (call (escape demo4) (parameters) n
(kw (:: (curly Type TV)) (curly Vector Float64)))
TV)
((n . |#118#n|) (|#unused#| . |#119##unused#|) (TV . |#120#TV|))
#<julia: DynamicPPL> () #f)
#4 (resolve-expansion-vars-
(function (where (call (escape demo4) (parameters) n
(kw (:: (curly Type TV))
(curly Vector Float64)))
TV)
(block (line 1 |REPL[4]|) (return (call #<julia: DynamicPPL.Model{F, argnames, defaultnames, missings, Targs, Tdefaults, Ctx} where Ctx<:DynamicPPL.AbstractContext where Tdefaults where Targs where missings where defaultnames where argnames where F>
(inert demo4) (escape demo4)
(call (curly NamedTuple (tuple
(inert n) (inert TV)))
(tuple n TV))
(call (curly NamedTuple (tuple
(inert TV)))
(tuple (curly Vector
Float64)))))))
((n . |#118#n|) (|#unused#| . |#119##unused#|) (TV . |#120#TV|))
#<julia: DynamicPPL> () #f)
#5 (resolve-expansion-vars-
(block (meta doc) (function (where (call (escape demo4) (parameters) n
(kw (:: (curly Type TV))
(curly Vector Float64)))
TV)
(block (line 1 |REPL[4]|)
(return (call #<julia: DynamicPPL.Model{F, argnames, defaultnames, missings, Targs, Tdefaults, Ctx} where Ctx<:DynamicPPL.AbstractContext where Tdefaults where Targs where missings where defaultnames where argnames where F>
(inert demo4) (escape demo4)
(call (curly NamedTuple (tuple
(inert n) (inert TV)))
(tuple n TV))
(call (curly NamedTuple (tuple
(inert TV)))
(tuple (curly Vector
Float64))))))))
() #<julia: DynamicPPL> () #f)
#6 (resolve-expansion-vars-
(block (function (where (call (escape demo4) (parameters)
(:: __model__ #<julia: DynamicPPL.Model{F, argnames, defaultnames, missings, Targs, Tdefaults, Ctx} where Ctx<:DynamicPPL.AbstractContext where Tdefaults where Targs where missings where defaultnames where argnames where F>)
(:: __varinfo__ #<julia: DynamicPPL.AbstractVarInfo>)
(:: __context__ #<julia: DynamicPPL.AbstractContext>)
n (:: (curly Type TV)))
TV)
(block (line 1 |REPL[4]|)
(block (line 1 |REPL[4]|)
(line 2 |REPL[4]|)
(block (= |##vn#286| (call (curly #<julia: AbstractPPL.VarName{sym, T} where T<:Tuple where sym>
(inert m))))
(= |##inds#287| (tuple))
(= |##isassumption#288| (block (if (call
#<julia: DynamicPPL.contextual_isassumption> __context__ |##vn#286|)
(block (if (|\|\|| (call ! (call #<julia: DynamicPPL.inargnames> |##vn#286|
__model__))
(call #<julia: DynamicPPL.inmissings> |##vn#286| __model__))
(block (true)) (block (call === m missing))))
(block (false)))))
(if |##isassumption#288| (block (= m (call
#<julia: DynamicPPL.tilde_assume!> __context__ (... (call #<julia: DynamicPPL.unwrap_right_vn>
(call #<julia: DynamicPPL.check_tilde_rhs>
(call Normal))
|##vn#286|))
|##inds#287| __varinfo__)))
(block (if (call ! (call #<julia: DynamicPPL.inargnames>
|##vn#286|
__model__))
(block (= m (call #<julia: DynamicPPL.getvalue_nested>
__context__ |##vn#286|))))
(call #<julia: DynamicPPL.tilde_observe!>
__context__ (call #<julia: DynamicPPL.check_tilde_rhs>
(call Normal))
m |##vn#286| |##inds#287|
__varinfo__))))
(line 3 |REPL[4]|)
(= x (call TV undef n))
(line 4 |REPL[4]|)
(block (call (globalref #<julia: Base> println)
#<julia: "__varinfo__ = ">
(call (globalref #<julia: Base>
repr)
(block (line 1040 show.jl)
(local (= |#101#value|
__varinfo__)))))
|#101#value|)
(line 5 |REPL[4]|)
(for (= i (call eachindex x))
(block (= |##vn#289| (call (curly #<julia: AbstractPPL.VarName{sym, T} where T<:Tuple where sym>
(inert x))
(tuple (tuple i))))
(= |##inds#290| (tuple (tuple i)))
(= |##isassumption#291| (block (if (call
#<julia: DynamicPPL.contextual_isassumption> __context__ |##vn#289|)
(block (if (|\|\|| (call ! (call #<julia: DynamicPPL.inargnames> |##vn#289|
__model__))
(call #<julia: DynamicPPL.inmissings> |##vn#289| __model__))
(block (true)) (block (call === (call #<julia: Base.maybeview> x
i)
missing))))
(block (false)))))
(if |##isassumption#291| (block (= (ref
x i)
(call #<julia: DynamicPPL.tilde_assume!> __context__
(... (call #<julia: DynamicPPL.unwrap_right_vn>
(call #<julia: DynamicPPL.check_tilde_rhs>
(call Normal m
#<julia: 1>))
|##vn#289|))
|##inds#290| __varinfo__)))
(block (if (call ! (call #<julia: DynamicPPL.inargnames>
|##vn#289| __model__))
(block (= (ref x i)
(call #<julia: DynamicPPL.getvalue_nested>
__context__ |##vn#289|))))
(call #<julia: DynamicPPL.tilde_observe!>
__context__ (call #<julia: DynamicPPL.check_tilde_rhs>
(call Normal m
#<julia: 1>))
(call #<julia: Base.maybeview>
x i)
|##vn#289| |##inds#290|
__varinfo__))))))))
(block (meta doc) (function (where (call (escape demo4) (parameters) n
(kw (:: (curly Type TV))
(curly Vector Float64)))
TV)
(block (line 1 |REPL[4]|)
(return (call #<julia: DynamicPPL.Model{F, argnames, defaultnames, missings, Targs, Tdefaults, Ctx} where Ctx<:DynamicPPL.AbstractContext where Tdefaults where Targs where missings where defaultnames where argnames where F>
(inert demo4) (escape
demo4)
(call (curly
NamedTuple (tuple
(inert n) (inert TV)))
(tuple n TV))
(call (curly
NamedTuple (tuple
(inert TV)))
(tuple (curly
Vector Float64)))))))))
() #<julia: DynamicPPL> () #f)
#7 (julia-expand-macroscopes-
(block (softscope (true)) (hygienic-scope (block (function (where (call (escape
demo4)
(parameters) (:: __model__ #<julia: DynamicPPL.Model{F, argnames, defaultnames, missings, Targs, Tdefaults, Ctx} where Ctx<:DynamicPPL.AbstractContext where Tdefaults where Targs where missings where defaultnames where argnames where F>)
(:: __varinfo__ #<julia: DynamicPPL.AbstractVarInfo>)
(:: __context__ #<julia: DynamicPPL.AbstractContext>) n (:: (curly Type TV)))
TV)
(block (line 1
|REPL[4]|)
(block (line
1 |REPL[4]|)
(line 2 |REPL[4]|) (block (= |##vn#286| (call (curly #<julia: AbstractPPL.VarName{sym, T} where T<:Tuple where sym>
(inert m))))
(= |##inds#287| (tuple))
(= |##isassumption#288| (block (if (call #<julia: DynamicPPL.contextual_isassumption>
__context__ |##vn#286|)
(block (if (|\|\||
(call ! (call #<julia: DynamicPPL.inargnames> |##vn#286| __model__))
(call #<julia: DynamicPPL.inmissings> |##vn#286| __model__))
(block (true)) (block (call === m missing))))
(block (false)))))
(if |##isassumption#288| (block (= m (call #<julia: DynamicPPL.tilde_assume!>
__context__ (... (call #<julia: DynamicPPL.unwrap_right_vn>
(call #<julia: DynamicPPL.check_tilde_rhs> (call
Normal))
|##vn#286|))
|##inds#287| __varinfo__)))
(block (if (call ! (call #<julia: DynamicPPL.inargnames>
|##vn#286| __model__))
(block (= m (call #<julia: DynamicPPL.getvalue_nested>
__context__
|##vn#286|))))
(call #<julia: DynamicPPL.tilde_observe!>
__context__ (call #<julia: DynamicPPL.check_tilde_rhs>
(call Normal))
m |##vn#286| |##inds#287|
__varinfo__))))
(line 3 |REPL[4]|) (= x (call TV undef n))
(line 4 |REPL[4]|) (block (call (globalref #<julia: Base> println)
#<julia: "__varinfo__ = ">
(call (globalref #<julia: Base> repr)
(block (line 1040 show.jl)
(local (= |#101#value|
__varinfo__)))))
|#101#value|)
(line 5 |REPL[4]|) (for (= i (call eachindex x))
(block (= |##vn#289| (call (curly #<julia: AbstractPPL.VarName{sym, T} where T<:Tuple where sym>
(inert x))
(tuple (tuple i))))
(= |##inds#290| (tuple (tuple i)))
(= |##isassumption#291| (block (if (call #<julia: DynamicPPL.contextual_isassumption>
__context__ |##vn#289|)
(block (if (|\|\||
(call ! (call #<julia: DynamicPPL.inargnames> |##vn#289| __model__))
(call #<julia: DynamicPPL.inmissings> |##vn#289| __model__))
(block (true)) (block (call === (call #<julia: Base.maybeview> x i) missing))))
(block (false)))))
(if |##isassumption#291| (block (= (ref x i)
(call #<julia: DynamicPPL.tilde_assume!>
__context__ (... (call #<julia: DynamicPPL.unwrap_right_vn>
(call #<julia: DynamicPPL.check_tilde_rhs>
(call Normal m
#<julia: 1>))
|##vn#289|))
|##inds#290| __varinfo__)))
(block (if (call ! (call #<julia: DynamicPPL.inargnames>
|##vn#289| __model__))
(block (= (ref x i)
(call #<julia: DynamicPPL.getvalue_nested>
__context__
|##vn#289|))))
(call #<julia: DynamicPPL.tilde_observe!>
__context__ (call #<julia: DynamicPPL.check_tilde_rhs>
(call Normal
m #<julia: 1>))
(call #<julia: Base.maybeview>
x i)
|##vn#289| |##inds#290|
__varinfo__))))))))
(block (meta doc)
(function (where (call
(escape demo4) (parameters) n
(kw (:: (curly Type TV)) (curly Vector Float64)))
TV)
(block (line
1 |REPL[4]|)
(return (call #<julia: DynamicPPL.Model{F, argnames, defaultnames, missings, Targs, Tdefaults, Ctx} where Ctx<:DynamicPPL.AbstractContext where Tdefaults where Targs where missings where defaultnames where argnames where F>
(inert demo4) (escape demo4)
(call (curly NamedTuple (tuple (inert n) (inert TV)))
(tuple n TV))
(call (curly NamedTuple (tuple (inert TV)))
(tuple (curly Vector Float64)))))))))
#<julia: DynamicPPL>)))
#8 (expand-toplevel-expr--
(block (softscope (true)) (hygienic-scope (block (function (where (call (escape
demo4)
(parameters) (:: __model__ #<julia: DynamicPPL.Model{F, argnames, defaultnames, missings, Targs, Tdefaults, Ctx} where Ctx<:DynamicPPL.AbstractContext where Tdefaults where Targs where missings where defaultnames where argnames where F>)
(:: __varinfo__ #<julia: DynamicPPL.AbstractVarInfo>)
(:: __context__ #<julia: DynamicPPL.AbstractContext>) n (:: (curly Type TV)))
TV)
(block (line 1
|REPL[4]|)
(block (line
1 |REPL[4]|)
(line 2 |REPL[4]|) (block (= |##vn#286| (call (curly #<julia: AbstractPPL.VarName{sym, T} where T<:Tuple where sym>
(inert m))))
(= |##inds#287| (tuple))
(= |##isassumption#288| (block (if (call #<julia: DynamicPPL.contextual_isassumption>
__context__ |##vn#286|)
(block (if (|\|\||
(call ! (call #<julia: DynamicPPL.inargnames> |##vn#286| __model__))
(call #<julia: DynamicPPL.inmissings> |##vn#286| __model__))
(block (true)) (block (call === m missing))))
(block (false)))))
(if |##isassumption#288| (block (= m (call #<julia: DynamicPPL.tilde_assume!>
__context__ (... (call #<julia: DynamicPPL.unwrap_right_vn>
(call #<julia: DynamicPPL.check_tilde_rhs> (call
Normal))
|##vn#286|))
|##inds#287| __varinfo__)))
(block (if (call ! (call #<julia: DynamicPPL.inargnames>
|##vn#286| __model__))
(block (= m (call #<julia: DynamicPPL.getvalue_nested>
__context__
|##vn#286|))))
(call #<julia: DynamicPPL.tilde_observe!>
__context__ (call #<julia: DynamicPPL.check_tilde_rhs>
(call Normal))
m |##vn#286| |##inds#287|
__varinfo__))))
(line 3 |REPL[4]|) (= x (call TV undef n))
(line 4 |REPL[4]|) (block (call (globalref #<julia: Base> println)
#<julia: "__varinfo__ = ">
(call (globalref #<julia: Base> repr)
(block (line 1040 show.jl)
(local (= |#101#value|
__varinfo__)))))
|#101#value|)
(line 5 |REPL[4]|) (for (= i (call eachindex x))
(block (= |##vn#289| (call (curly #<julia: AbstractPPL.VarName{sym, T} where T<:Tuple where sym>
(inert x))
(tuple (tuple i))))
(= |##inds#290| (tuple (tuple i)))
(= |##isassumption#291| (block (if (call #<julia: DynamicPPL.contextual_isassumption>
__context__ |##vn#289|)
(block (if (|\|\||
(call ! (call #<julia: DynamicPPL.inargnames> |##vn#289| __model__))
(call #<julia: DynamicPPL.inmissings> |##vn#289| __model__))
(block (true)) (block (call === (call #<julia: Base.maybeview> x i) missing))))
(block (false)))))
(if |##isassumption#291| (block (= (ref x i)
(call #<julia: DynamicPPL.tilde_assume!>
__context__ (... (call #<julia: DynamicPPL.unwrap_right_vn>
(call #<julia: DynamicPPL.check_tilde_rhs>
(call Normal m
#<julia: 1>))
|##vn#289|))
|##inds#290| __varinfo__)))
(block (if (call ! (call #<julia: DynamicPPL.inargnames>
|##vn#289| __model__))
(block (= (ref x i)
(call #<julia: DynamicPPL.getvalue_nested>
__context__
|##vn#289|))))
(call #<julia: DynamicPPL.tilde_observe!>
__context__ (call #<julia: DynamicPPL.check_tilde_rhs>
(call Normal
m #<julia: 1>))
(call #<julia: Base.maybeview>
x i)
|##vn#289| |##inds#290|
__varinfo__))))))))
(block (meta doc)
(function (where (call
(escape demo4) (parameters) n
(kw (:: (curly Type TV)) (curly Vector Float64)))
TV)
(block (line
1 |REPL[4]|)
(return (call #<julia: DynamicPPL.Model{F, argnames, defaultnames, missings, Targs, Tdefaults, Ctx} where Ctx<:DynamicPPL.AbstractContext where Tdefaults where Targs where missings where defaultnames where argnames where F>
(inert demo4) (escape demo4)
(call (curly NamedTuple (tuple (inert n) (inert TV)))
(tuple n TV))
(call (curly NamedTuple (tuple (inert TV)))
(tuple (curly Vector Float64)))))))))
#<julia: DynamicPPL>))
|REPL[4]| 1)
ERROR: syntax: malformed expression
Stacktrace:
[1] top-level scope
@ REPL[4]:1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment