Support for catching exceptions and reworked lexical variables
This commit is contained in:
@ -85,23 +85,12 @@
|
||||
(setq vars (pair (first ent) vars)
|
||||
vals (pair (second ent) vals))
|
||||
(throw 'argument-error))))
|
||||
(apply 'list 'funcall (apply 'list 'lambda (reverse vars) body)
|
||||
(apply 'list 'funcall (apply 'list 'lambda
|
||||
(reverse vars)
|
||||
'(declare (name nil))
|
||||
body)
|
||||
(reverse vals)))))
|
||||
|
||||
(defun plist-put (plist key value)
|
||||
(let ((tail plist))
|
||||
(while (and tail (tail tail))
|
||||
(if (eq (head tail) key)
|
||||
(sethead (tail tail) value))
|
||||
(setq tail (tail (tail tail))))))
|
||||
|
||||
(defun put (symbol key value)
|
||||
(let ((cur (symbol-plist symbol)))
|
||||
()))
|
||||
|
||||
(defun get (symbol key default)
|
||||
())
|
||||
|
||||
(defun lasttail (list)
|
||||
"Return the last pair in LIST."
|
||||
(let (out)
|
||||
@ -146,23 +135,6 @@
|
||||
(pair pred (tail cond))))
|
||||
conds)))))
|
||||
|
||||
(defun internal-expand-\` (form &opt (level 0))
|
||||
(tcase
|
||||
(())))
|
||||
|
||||
(defmacro \` (form)
|
||||
(internal-expand-\` form))
|
||||
|
||||
;; (println (macroexpand-1 '`(,@a)))
|
||||
|
||||
(defmacro a (form)
|
||||
(list 'b (ensure-list form)))
|
||||
|
||||
(defmacro b (form)
|
||||
(list 'c (ensure-list form)))
|
||||
|
||||
(defmacro c (form)
|
||||
(list 'd form))
|
||||
|
||||
;; (let ((a '(1 2 3)))
|
||||
;; (println `(,a)))
|
||||
(defmacro unwind-protect (form &rest unwind-forms)
|
||||
(list 'condition-case form
|
||||
(pair :finally unwind-forms)))
|
||||
|
Reference in New Issue
Block a user