all: make a ton of features work

This commit is contained in:
2018-05-14 20:59:24 +02:00
parent 8cb7c37096
commit e3334b9ef0
6 changed files with 919 additions and 514 deletions

View File

@@ -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))