(mac defset (name parms . body) (w/uniq gexpr `(sref setter (fn (,gexpr) (let ,parms (cdr ,gexpr) ,@body)) ',name)))
(defset car (x) (w/uniq g (list (list g x) `(car ,g) `(fn (val) (scar ,g val)))))
-----