At least Arc does the default properly:
arc> (def f (n (o tbl (obj))) (= tbl.n (* n 2)) tbl) #<procedure:zz> arc> (f 1) #hash((1 . 2)) arc> (f 2) #hash((2 . 4))
Arc does have similar gotchas with quote: http://arclanguage.org/item?id=10248 (one of my earliest posts on this forum)
-----