@@ -320,21 +320,30 @@ struct Gibbs{V,A} <: InferenceAlgorithm
320
320
end
321
321
end
322
322
323
+ to_varname (vn:: VarName ) = vn
324
+ to_varname (s:: Symbol ) = VarName {s} ()
325
+ # Any other value is assumed to be an iterable.
326
+ to_varname (t) = map (to_varname, collect (t))
327
+
323
328
# NamedTuple
324
329
Gibbs (; algs... ) = Gibbs (NamedTuple (algs))
325
330
function Gibbs (algs:: NamedTuple )
326
331
return Gibbs (
327
- map (s -> VarName {s} (), keys (algs)),
328
- map (wrap_algorithm_maybe ∘ drop_space, values (algs)),
332
+ map (to_varname, keys (algs)), map (wrap_algorithm_maybe ∘ drop_space, values (algs))
329
333
)
330
334
end
331
335
332
336
# AbstractDict
333
337
function Gibbs (algs:: AbstractDict )
334
- return Gibbs (collect (keys (algs)), map (wrap_algorithm_maybe ∘ drop_space, values (algs)))
338
+ return Gibbs (
339
+ map (to_varname, collect (keys (algs))),
340
+ map (wrap_algorithm_maybe ∘ drop_space, values (algs)),
341
+ )
335
342
end
336
343
function Gibbs (algs:: Pair... )
337
- return Gibbs (map (first, algs), map (wrap_algorithm_maybe ∘ drop_space, map (last, algs)))
344
+ return Gibbs (
345
+ map (to_varname ∘ first, algs), map (wrap_algorithm_maybe ∘ drop_space ∘ last, algs)
346
+ )
338
347
end
339
348
340
349
# The below two constructors only provide backwards compatibility with the constructor of
383
392
_maybevec (x) = vec (x) # assume it's iterable
384
393
_maybevec (x:: Tuple ) = [x... ]
385
394
_maybevec (x:: VarName ) = [x]
395
+ _maybevec (x:: Symbol ) = [x]
386
396
387
397
varinfo (state:: GibbsState ) = state. vi
388
398
0 commit comments