diff --git a/shell/data.limg b/shell/data.limg index 0c46da98..fcc7a1ba 100644 --- a/shell/data.limg +++ b/shell/data.limg @@ -101,6 +101,19 @@ if (f (car xs)) (cons (car xs) rest) rest]) + (alist? . [def (alist? x) + (and (cons? x) + (cons? (car x)))]) + (assoc . [def (assoc alist key) + if (no alist) + () + if (key = (caar alist)) + (car alist) + (assoc (cdr alist) key)]) + (get . [def (get alist key) + aif (assoc alist key) + (cdr it) + ()]) (++ . [mac (++ var) `(set ,var (,var + 1))]) (+= . [mac (var += inc) `(set ,var (,var + ,inc))])