all: make a ton of features work
This commit is contained in:
22
lib/arc.arc
22
lib/arc.arc
@@ -21,22 +21,8 @@
|
||||
; not sure this is a mistake; strings may be subtly different from
|
||||
; lists of chars
|
||||
|
||||
|
||||
(assign do (annotate 'mac
|
||||
(fn args `((fn () ,@args)))))
|
||||
|
||||
(assign safeset (annotate 'mac
|
||||
(fn (var val)
|
||||
`(do (if (bound ',var)
|
||||
(do (disp "*** redefining " (stderr))
|
||||
(disp ',var (stderr))
|
||||
(disp #\newline (stderr))))
|
||||
(assign ,var ,val)))))
|
||||
|
||||
(assign def (annotate 'mac
|
||||
(fn (name parms . body)
|
||||
`(do (sref sig ',parms ',name)
|
||||
(safeset ,name (fn ,parms ,@body))))))
|
||||
(mac def (name params body)
|
||||
(list '= name (list 'fn params body)))
|
||||
|
||||
(def caar (xs) (car (car xs)))
|
||||
(def cadr (xs) (car (cdr xs)))
|
||||
@@ -54,8 +40,8 @@
|
||||
; (def list args args)
|
||||
|
||||
(def copylist (xs)
|
||||
(if (no xs)
|
||||
nil
|
||||
(if (no xs)
|
||||
nil
|
||||
(cons (car xs) (copylist (cdr xs)))))
|
||||
|
||||
(def list args (copylist args))
|
||||
|
Reference in New Issue
Block a user