;; x? over a dyn: true when it is not nil. A dyn x stays a dyn in the block, ;; and e? as g binds a dyn that is present (decision 133). fn describe(a, b) if a? a + 100 elif b? and b > 5 b + 200 else 0 fn run(a, n) println(a?, n?) println(describe(a, n), describe(n, 9), describe(n, 2)) let m = {:name "ann" :pet nil} if m.pet? as pet println(pet) else println("no pet") if m.name? as who println(who) let xs = [1, 2, nil, 4] let i = 0 let total = 0 while get(xs, i)? as x total += x i += 1 println(total, i) fn main() run(3, nil)