flan/test/programs/presence-dyn.fln

32 lines
595 B
Plaintext

;; 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)