From fa26249931c1cf71edd78cb1c030b501783ae027 Mon Sep 17 00:00:00 2001 From: "Kartik K. Agaram" Date: Sun, 20 Jun 2021 22:24:03 -0700 Subject: new macro: with --- shell/data.limg | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'shell/data.limg') diff --git a/shell/data.limg b/shell/data.limg index 31510aef..3c1656dc 100644 --- a/shell/data.limg +++ b/shell/data.limg @@ -35,7 +35,7 @@ (map1 f (cdr xs)))]) (compose . [def (compose f g) (fn args - (f (g args)))]) + (f (apply g args)))]) (some . [def (some f xs) if (no xs) () @@ -55,6 +55,17 @@ if (= x (car xs)) 1 (find x (cdr xs))]) + (pair . [def (pair xs) + if (no xs) + () + if (no (cdr xs)) + (list (list (car xs))) + (cons (list (car xs) (car (cdr xs))) + (pair (cdr (cdr xs))))]) + (with . [mac (with vars_vals . body) + `((fn ,(map1 car (pair vars_vals)) + ,@body) + ,@(map1 (compose car cdr) (pair vars_vals)))]) (afn . [mac (afn params . body) `(let self () (set self (fn ,params ,@body)))]) -- cgit 1.4.1-2-gfad0