;;;;;;;;;;;;;;;;;;; -*- Lisp -*- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; (c) Copyright 1980 Massachusetts Institute of Technology ;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;(macsyma-module meta macro) ;;; GJC Some time in July 1980. ;;; a very simple meta evaluator for lisp code. ;;; the main use of this is for looking at functions ;;; which are candidates for open compilation. ;;; No. Also used to implement atomic macros in order to implement ;;; lexical DEFCLOSURE. Also used in the macsyma->lisp translator ;;; to gronk environments. Also used to implement lexicaly local macros... #-Lispm (herald meta-evaluator) (eval-when (eval) ;trivial utilities (defun ldm () (load '|libmax;meta >|)) (defmacro defo (&rest form) `(def-subr-open ,@form)) (defun oexp (x) (open-subr-expander x))) (eval-when (compile eval) (or (fboundp 'defstruct) (load '((liblsp)struct)))) (defstruct (meta-var conc-name #+maclisp (TYPE NAMED-HUNK) #+lispm named) (eval-p 0) (setq-p 0) special-p name VALUE IN-LOOP-P ;; T if found free a PROG context. IN-FUNARG-P CERTAIN-EVAL-P ;; T if certain to get evaluated. ;; NIL if it might not get evaluated due to ;; RETURN, GO, or THROW. ORDER ;; the evaluation order of the first time evaluated. ) ;;; (META-EVAL