start dropping parens everywhere

This commit is contained in:
Kartik K. Agaram 2021-06-20 21:29:33 -07:00
parent 6e1aa99a00
commit deb610367f

View File

@ -1,107 +1,108 @@
( (
(globals . ( (globals . (
(mac . [(define mac (litmac litfn () ((name . params) . body) (mac . [define mac (litmac litfn () ((name . params) . body)
`(define ,name (litmac litfn () ,params ,@body))))]) `(define ,name (litmac litfn () ,params ,@body)))])
(def . [(mac (def (name . params) . body) (def . [mac (def (name . params) . body)
`(define ,name (fn ,params ,@body)))]) `(define ,name (fn ,params ,@body))])
(do . [(mac (do . body) `((fn () ,@body)))]) (do . [mac (do . body)
`((fn () ,@body))])
(let . [(mac (let var val . body) (let . [(mac (let var val . body)
`((fn (,var) ,@body) ,val))]) `((fn (,var) ,@body) ,val))])
(when . [(mac (when cond . body) (when . [mac (when cond . body)
`(if ,cond (do ,@body) ()))]) `(if ,cond (do ,@body) ())])
(iflet . [(mac (iflet var expr then else) (iflet . [mac (iflet var expr then else)
`(let ,var ,expr `(let ,var ,expr
(if ,var ,then ,else)))]) (if ,var ,then ,else))])
(aif . [(mac (aif expr then else) (aif . [mac (aif expr then else)
`(iflet it ,expr ,then ,else))]) `(iflet it ,expr ,then ,else)])
(list . [(def (list . args) (list . [def (list . args)
# we should probably make a copy here # we should probably make a copy here
args)]) args])
(len . [(def (len l) (len . [def (len l)
(if (no l) if (no l)
0 0
(+ 1 (len (cdr l)))))]) (+ 1 (len (cdr l)))])
(nth . [(def (nth n xs) (nth . [def (nth n xs)
(if (< n 1) if (< n 1)
(car xs) (car xs)
(nth (- n 1) (cdr xs))))]) (nth (- n 1) (cdr xs))])
(map1 . [(def (map1 f xs) (map1 . [def (map1 f xs)
(if (no xs) if (no xs)
() ()
(cons (f (car xs)) (cons (f (car xs))
(map1 f (cdr xs)))))]) (map1 f (cdr xs)))])
(compose . [(def (compose f g) (compose . [def (compose f g)
(fn args (fn args
(f (g args))))]) (f (g args)))])
(some . [(def (some f xs) (some . [def (some f xs)
(if (no xs) if (no xs)
() ()
(if (f (car xs)) if (f (car xs))
xs xs
(some f (cdr xs)))))]) (some f (cdr xs))])
(any . some) (any . some)
(all . [(def (all f xs) (all . [def (all f xs)
(if (no xs) if (no xs)
1 1
(if (f (car xs)) if (f (car xs))
(all f (cdr xs)) (all f (cdr xs))
())))]) ()])
(find . [(def (find x xs) (find . [def (find x xs)
(if (no xs) if (no xs)
() ()
(if (= x (car xs)) if (= x (car xs))
1 1
(find x (cdr xs)))))]) (find x (cdr xs))])
(afn . [(mac (afn params . body) (afn . [mac (afn params . body)
`(let self () `(let self ()
(set self (fn ,params ,@body))))]) (set self (fn ,params ,@body)))])
(seq . [(def (seq n) (seq . [def (seq n)
((afn (i) ((afn (i)
(if (> i n) (if (> i n)
() ()
(cons i (self (+ i 1))))) (cons i (self (+ i 1)))))
1))]) 1)])
(each . [(mac (each x xs . body) (each . [mac (each x xs . body)
`(walk ,xs (fn (,x) ,@body)))]) `(walk ,xs (fn (,x) ,@body))])
(walk . [(def (walk xs f) (walk . [def (walk xs f)
(when xs when xs
(f (car xs)) (f (car xs))
(walk (cdr xs) f))) ]) (walk (cdr xs) f)])
(rem . [(def (rem f xs) (rem . [def (rem f xs)
(if (no xs) if (no xs)
() ()
(let rest (rem f (cdr xs)) let rest (rem f (cdr xs))
(if (f (car xs)) if (f (car xs))
rest rest
(cons (car xs) rest)))))]) (cons (car xs) rest)])
(keep . [(def (keep f xs) (keep . [def (keep f xs)
(if (no xs) if (no xs)
() ()
(let rest (keep f (cdr xs)) let rest (keep f (cdr xs))
(if (f (car xs)) if (f (car xs))
(cons (car xs) rest) (cons (car xs) rest)
rest))))]) rest])
(++ . [(mac (++ var) `(set ,var (+ ,var 1)))]) (++ . [mac (++ var) `(set ,var (+ ,var 1))])
(+= . [(mac (+= var inc) (+= . [mac (+= var inc)
`(set ,var (+ ,var ,inc)))]) `(set ,var (+ ,var ,inc))])
(for . [(mac (for var init test update . body) (for . [mac (for var init test update . body)
`(let ,var ,init `(let ,var ,init
(while ,test (while ,test
,@body ,@body
,update)))]) ,update))])
(hline1 . [(def (hline1 screen y x xmax color) (hline1 . [def (hline1 screen y x xmax color)
(while (< x xmax) while (< x xmax)
(pixel screen x y color) (pixel screen x y color)
(++ x)))]) (++ x)])
(vline1 . [(def (vline1 screen x y ymax color) (vline1 . [def (vline1 screen x y ymax color)
(while (< y ymax) while (< y ymax)
(pixel screen x y color) (pixel screen x y color)
(++ y)))]) (++ y)])
(hline . [(def (hline screen y color) (hline . [def (hline screen y color)
(hline1 screen y 0 (width screen) color))]) (hline1 screen y 0 (width screen) color)])
(vline . [(def (vline screen x color) (vline . [def (vline screen x color)
(vline1 screen x 0 (height screen) color))]) (vline1 screen x 0 (height screen) color)])
(line . [(def (line screen x0 y0 x1 y1 color) (line . [def (line screen x0 y0 x1 y1 color)
(let (x y) `(,x0 ,y0) (let (x y) `(,x0 ,y0)
(let dx (abs (- x1 x0)) (let dx (abs (- x1 x0))
(let dy (- 0 (abs (- y1 y0))) (let dy (- 0 (abs (- y1 y0)))
@ -122,22 +123,23 @@
0) 0)
(if (<= e2 dx) (if (<= e2 dx)
dx dx
0))))))))))))]) 0)))))))))))])
(read_line . [(def (read_line keyboard) (read_line . [def (read_line keyboard)
(let str (stream) (let str (stream)
(let c (key keyboard) (let c (key keyboard)
(while (not (or (= c 0) (= c 10))) (while (not (or (= c 0) (= c 10)))
(write str c) (write str c)
(set c (key keyboard)))) (set c (key keyboard))))
str))]) str)])
(wait . [(def (wait keyboard) (wait . [def (wait keyboard)
(while (= 0 (key keyboard))))]) while (= 0 (key keyboard))
(sq . [(def (sq n) (* n n))]) ()])
(cube . [(def (cube n) (* (* n n) n))]) (sq . [def (sq n) (* n n)])
(fill_rect . [(def (fill_rect screen x1 y1 x2 y2 color) (cube . [def (cube n) (* (* n n) n)])
(for y y1 (< y y2) (++ y) (fill_rect . [def (fill_rect screen x1 y1 x2 y2 color)
(hline1 screen y x1 x2 color)))]) for y y1 (< y y2) (++ y)
(circle . [(def (circle screen cx cy r clr) (hline1 screen y x1 x2 color)])
(circle . [def (circle screen cx cy r clr)
(let x (- 0 r) (let x (- 0 r)
(let y 0 (let y 0
(let err (- 2 (* 2 r)) (let err (- 2 (* 2 r))
@ -156,26 +158,26 @@
(++ x) (++ x)
(+= err (+= err
(+ 1 (* 2 x)))) (+ 1 (* 2 x))))
(set continue (< x 0))))))))]) (set continue (< x 0)))))))])
(ring . [(def (ring screen cx cy r0 w clr) (ring . [def (ring screen cx cy r0 w clr)
(for r r0 (< r (+ r0 w)) (++ r) for r r0 (< r (+ r0 w)) (++ r)
(circle screen cx cy r clr)))]) (circle screen cx cy r clr)])
(Greys . [(define Greys (Greys . [define Greys
(map1 (fn(n) (+ n 15)) (map1 (fn(n) (+ n 15))
(seq 16)))]) (seq 16))])
(Pinks . [(define Pinks '(84 85 59 60 61 (Pinks . [define Pinks '(84 85 59 60 61
13 36 37 5 108))]) 13 36 37 5 108)])
(palette . [(def (palette p i) (palette . [def (palette p i)
(nth (% i (len p)) p))]) (nth (% i (len p)) p)])
(pat . [(def (pat screen) (pat . [def (pat screen)
(let w (width screen) (let w (width screen)
(let h (height screen) (let h (height screen)
(for y 0 (< y h) (++ y) (for y 0 (< y h) (++ y)
(for x 0 (< x w) (++ x) (for x 0 (< x w) (++ x)
(pixel screen x y (pixel screen x y
(* x y)))))))]) (* x y))))))])
(main . [(def (main screen keyboard) (main . [def (main screen keyboard)
(pat screen))]) (pat screen)])
)) ))
(sandbox . (pat screen)) (sandbox . (pat screen))
) )