Changeset 10654 for lang/elisp
- Timestamp:
- 04/28/08 17:49:07 (7 months ago)
- Location:
- lang/elisp/escm/trunk
- Files:
-
- 4 added
- 2 removed
- 18 modified
-
Makefile.el (deleted)
-
Makefile.in (modified) (2 diffs)
-
README.rd (modified) (2 diffs)
-
emacs-config.el (added)
-
src/elisp/DEVELOPERSTOOLS.el (modified) (5 diffs)
-
src/elisp/escm-arity.el (modified) (1 diff)
-
src/elisp/escm-base.el (modified) (1 diff)
-
src/elisp/escm-cbos.el (modified) (3 diffs)
-
src/elisp/escm-compile.el (modified) (18 diffs)
-
src/elisp/escm-debug.el (modified) (4 diffs)
-
src/elisp/escm-env.el (modified) (12 diffs)
-
src/elisp/escm-iblock-content.el (modified) (18 diffs)
-
src/elisp/escm-iblock.el (modified) (3 diffs)
-
src/elisp/escm-icode.el (modified) (1 diff)
-
src/elisp/escm-port.el (modified) (6 diffs)
-
src/elisp/escm-preprocess.el (deleted)
-
src/elisp/escm-proc.el (modified) (7 diffs)
-
src/elisp/escm-test.el (modified) (1 diff)
-
src/elisp/escm-util.el (modified) (1 diff)
-
src/elisp/escm-vm.el (modified) (6 diffs)
-
src/elisp/escm.el (modified) (2 diffs)
-
src/escm/init.escm (added)
-
src/test/input-file.00 (added)
-
src/test/test.escm (added)
Legend:
- Unmodified
- Added
- Removed
-
lang/elisp/escm/trunk/Makefile.in
r9340 r10654 1 1 2 2 EMACS=@EMACS@ 3 EMACSFLAGS= -batch -q -L . 3 SITELISP=@SITELISP@ 4 5 ELDIR=src/elisp 6 ESCMDIR=src/escm 7 4 8 ELS= escm-util.minimal.el \ 5 9 escm-test.el \ … … 8 12 \ 9 13 escm-base.el \ 10 escm-preprocess.el \ 14 \ 15 escm-env.el \ 11 16 \ 12 17 escm-arity.el \ 13 escm-env.el \14 18 escm-proc.el \ 19 \ 15 20 escm-syntax.el \ 21 escm-iblock-content.el \ 22 escm-iblock.el \ 23 escm-icode.el \ 24 escm-elizer.el \ 25 escm-compile.el \ 26 escm-port.el \ 16 27 \ 17 escm-iblock-content.el \ 18 escm-iblock.el \ 19 escm-icode.el \ 20 \ 21 escm-context.el \ 22 escm-compile.el \ 23 \ 24 escm-debug.el \ 25 escm-vm.el \ 26 escm.el 28 escm-debug.el \ 29 escm-vm.el \ 30 escm.el 27 31 28 .SUFFIXES: .el .elc 32 EMACSFLAGS= -batch -q -L . 33 34 .SUFFIXES: .el .elc .escm .escmc 29 35 30 36 .el.elc: 31 37 $(EMACS) $(EMACSFLAGS) -f batch-byte-compile $< 32 38 33 elc: $(ELS:.el=.elc) 39 .escm.escmc: 40 $(EMACS) $(EMACSFLAGS) -l escm.el -f escm-batch-byte-compile $< 41 42 43 44 elc: 45 cd src/elisp; \ 46 make -f ../../Makefile.in elcs EMACS=$(EMACS) 47 48 elcs: $(ELS:.el=.elc) 49 34 50 35 51 clean: 36 rm -rf *.elc 52 find . -type f -name \*.elc |xargs rm 53 54 install: install.el 55 $(EMACS) $(EMACSFLAGS) -l emacs-config.el 37 56 38 57 distclean: clean -
lang/elisp/escm/trunk/README.rd
r7842 r10654 12 12 * $BKvHx:F5"$N:GE,2=(B 13 13 * call/cc 14 15 14 16 15 == elisp $B$C$]$$$H$3$m(B … … 29 28 * $BG$0U8D?t$N(BVM$B%$%s%9%?%s%9$,:n$l$k(B 30 29 31 32 30 =end 33 -
lang/elisp/escm/trunk/src/elisp/DEVELOPERSTOOLS.el
r10036 r10654 6 6 7 7 (require 'escm) 8 9 8 (global-set-key [?\C-c ?e ?a] 'escm-debug::activate) 10 9 (global-set-key [?\C-c ?e ?d] 'escm-debug::deactivate) … … 25 24 (when nil 26 25 (escm-vm::eval (escm-vm::new) '(+ 0 1 (* 2 3) 4)) 26 27 27 (escm-vm::eval (escm-vm::new) '(if nil 1 2)) 28 (escm-vm::eval 29 (escm-vm::new)30 '((lambda ()31 (define (fact n) (if (= n 1) n (* n (fact (- n 1)))))32 (fact 10))))28 29 (escm-vm::eval (escm-vm::new) 30 '((lambda () 31 (define (fact n) (if (= n 1) n (* n (fact (- n 1))))) 32 (fact 10)))) 33 33 34 34 (progn 35 35 36 (defun fib (n) 36 37 (if (< n 2) … … 38 39 (+ (fib (- n 2)) 39 40 (fib (- n 1))))) 40 (escm-eval '(fib 10))) 41 42 (escm-eval '(fib 10)) 43 44 ) 41 45 42 46 (escm-vm::eval … … 65 69 )) 66 70 67 (funcall 68 #[(vm) "\306\307\310\307\311\312\306\211\211\211\211&\307\313\306\314\315!\316 \317\320\306BB\"\210 )\320\306%\307\321\322\323\307\303\324\325\326\327\330\331\312\307\310\307\311\332\330\306B\306\211\211\211&\307\333\306\314\315!\316 \330\320\334\335\306BBBB\"\210 )\314\336!\316 \334\306\211BB\"\210 )\307\311\332\330\306B\306\211\211\211&\334\330\306BB&\307\321\322\337\307\303\324\325\326\327\330\331\312\307\310\307\311\340\341\342\330\306BBB\306\211\211\211&\307\333\306\314\315!\316 \341\320\342\335\330\343\306BBBBBB\"\210 )\314\336!\307\311\340\341\342\330\306BBB\306\211\211\211&\330\342\341\306BBB&\307\321\322\344\307\303\330\345\327\324\325\331\312\332\346\306\347\350\351\352\353\354\355\356\357\360\361\362\363\364\365\366\367\326\370& 69 \371$\321\322\372\307\303\330\331\312\373\320\374\375&\335$\321\322\376\307\303\330\345\327\324\325\331\312\332\346\306\347\342\350\351\377\201@ \352\340\341\320\201A\354\355\356\357\360\361\362\363\364\365\366\367\201B\326\370&%\371$\321\322\201C\307\303\201B\330\345\327\324\331\312\373\377\201@\332\346\306\347\352\350\351\340\201D\354\355\356\357\360\361\362\363\364\365\366\367\325\326\370&#\371$\321\322\201E\307\303\201B\327\324\325\370\331\312\373\377\201@\332\334\350\354\356\201F\360\201G\362\201H\364\365\374\367&\335$\321\322\201I\307\303\330\331\312\332\374\375&\335$\321\322\201J\307\303\330\345\327\324\325\331\312\332\346\306\347\342\350\351\341\352\201A\354\356\201F\360\201G\362\201H\364\365\374\367\326\370&\371$\321\322\201K\307\303\331\312\201L\201M\201N\201O\201P&\340$&\306\307\201Q\201R\201S#&\350\201T\373\332\334\201U\352\340\346\306\347\320\351\335\354\356\201F\360\201G\362\201H\364\365\374\367\345\370&$\371$\321\322\201K\307\303\331\312\201L\201M\201N\201O\201P&\340$\"\306\307\201Q\201V\201W#&\350\201T\373\332\317\201U\352\340\346\306\347\320\201X\377\201@\335\354\356\201F\360\201G\362\201H\364\365\374\367\345\201B\370&'\343$\321\322\201K\307\303\331\312\201L\201M\201N\201O\201P&\340$\"\306\307\201Q\201Y\201Z#&\211)\211\201[!@)70 \211 71 \352I\210* 72 73 8\355 \2108\206\332\356! 74 8\357\3608!\"\210\361\3628!\"\210\363\3648\"\"\210\365!\210\366\367\",\207" [escm-util::gensym::18441/32920/95488/8 sym top vm val obj nil vector escm-proc escm-arity 0 escm-fixed-env make-symbol "*dic*" setplist fib 4 make-byte-code (vm *env*) "\306\307\"\210\310C\311\312 75 #*\313!\240\210*\306\314\"\210\315\313!@)D\311\316 76 #\210*\306\317\"\210\315\313!\240\210*\306\320\"\210\314 77 \321! 78 $ 79 \307V\203c \322$B$80 S\211\202Q \323$\"\210+\306\324\"\210\32581 %\326%\327!B\"\210*\306\330\"\210\315C\311\331 82 #* 83 &&\206\233 \332!84 &\333\334&!\"\210\335\336&!\"\210\337\340&\"\"\210\341!\210\342\343\"+\207" args *object* v *env* n escm-debug 1 escm-dynamic-env iter 5 "*valdic*" "\306\307\"\210\310C\311\312 85 #*\313!\240\210*\306\314\"\210\315\313!@)D\311\316 86 #\210*\306\317\"\210\315\313!\240\210*\306\320\"\210\314 87 \321! 88 \" 89 \307V\203c \322\"B\"90 S\211\202Q \323\"\"\210+\306\324\"\210\305C\311\32591 #*\314\307\321!@)BBB\321!\240\210*\306\326\"\210\315C\311\327 92 #* 93 ##\206\254 \330!94 #\331\332#!\"\210\333\334#!\"\210\335\336#\"\"\210\337!\210\340\341\"+\207" 3 a b 6 "\306\307\"\210\310\311! \307V\203 95 \31296 B S\211\202 \31397 \"\210+\306\310\"\210\307\301C 98 99 \314\315 100 #*\311!@)BB 101 102 \311! 103 \240\210*\306\316\"\210\317C 104 105 \314\320 106 #* 107 108 \321 \210 109 \206i \322!110 111 \323\324 112 !\"\210\325\326 113 !\"\210\327\330 114 \"\"\210\331!\210\332\333\"+\207" stack escm-vm::get-arg-stack escm-vm::set-arg-stack escm-cbos::run-method escm-env::gref 2 = escm-env::fref escm-debug::enter escm-vm::current-val escm-vm::push-src escm-proc::get-src escm-vm::push-proc escm-proc::get-body escm-vm::push-env escm-proc::runtime-env escm-vm::pop-arg escm-vm::push-pc -1 proc 7 "\302\303\"\210\304!@)\205 115 \305\306 \307!\\\"*\207" escm-vm::get-val-stack escm-vm::set-current-pc escm-vm::current-pc "\306\307\"\210\310\311! \307V\203116 \312117 B S\211\202 \313118 \"\210+\306\310\"\210\314C 119 120 \315\316 121 #* 122 \"\317\"\320!B\"\210*\306\321\"\210\310\311! \307V\203a \312123 B S\211\202Q \313124 \"\210+\306\322\"\210\314C 125 126 \315\316 127 #*\323C 128 129 \315\316 130 #*\311!@)BB 131 #\311!#\240\210*\306\324\"\210\325C 132 133 \315\326 134 #* 135 $\327 \210$\206\266 \330!136 $\331\332$!\"\210\333\334$!\"\210\335\336$\"\"\210\337!\210\340\341\"+\207" escm-vm::set-current-arg escm-vm::current-arg + arg "\306\307\"\210\211\310!@)\311 \312!B\"\210*\306\313\"\210\313\314! 137 \307V\2037 \315B138 S\211\202' \316\"\210+\306\317\"\210\313\302C139 140 \320\321 141 #*\314!@)BB 142 !\314!!\240\210*\306\322\"\210\323C 143 144 \320\324 145 #* 146 \"\325 \210\"\206\206 \326!147 \"\327\330\"!\"\210\331\332\"!\"\210\333\334\"\"\"\210\335!\210\336\337\"+\207" - "\306\307\"\210\211\310!@)\311 \312!B\"\210*\306\313\"\210 148 \314C 149 \315\316#* 150 151 \2063 \317!152 \320\321 153 !\"\210\322\323 154 !\"\210\324\325 155 \"\"\210\326!\210\327\330\"+\207" escm-vm::set-current-src escm-vm::set-current-proc escm-vm::set-current-env "\302\303\"\210\304\305 \306!\\\"*\207" "\306\307\"\210\310\311! \307V\203 156 \312157 B S\211\202 \313158 \"\210+\306\310\"\210\314C 159 160 \315\316 161 #*\317C 162 163 \315\316 164 #*\311!@)BB 165 166 \311! 167 \240\210*\306\320\"\210\321C 168 169 \315\322 170 #* 171 172 173 \206p \323!174 175 \324\325 176 !\"\210\326\327 177 !\"\210\330\331 178 \"\"\210\332!\210\333\334\"+\207" "\301\302\"\210\303!\210\304!\210\305!\210\306!\210\307 )\207" escm-vm::pop-src escm-vm::pop-proc escm-vm::pop-env escm-vm::pop-pc escm-debug::leave escm-iproc (list (vector (quote escm-iblock) (quote (list nil nil nil)) (quote t)) (vector (quote escm-iblock) (quote (list nil)) (quote t)) (vector (quote escm-iblock) (quote (list nil nil nil nil nil)) (quote t)) (vector (quote escm-iblock) (quote (list nil nil nil nil)) (quote t)) (vector (quote escm-iblock) (quote (list nil nil)) (quote t)) (vector (quote escm-iblock) (quote (list nil)) (quote t)) (vector (quote escm-iblock) (quote (list nil nil nil)) (quote t)) (vector (quote escm-iblock) (quote (list nil)) (quote t))) (lambda (a b n) (if (= n 0) (+ a b) (iter b (+ a b) (- n 1)))) escm-proc::activate escm-env::gset! (list (vector (quote escm-iblock) (quote (list nil nil nil nil nil nil)) (quote t)) (vector (quote escm-iblock) (quote (list nil)) (quote t))) (lambda (n) (define (iter a b n) (if (= n 0) (+ a b) (iter b (+ a b) (- n 1)))) (iter 0 1 n)) 10 (list (vector (quote escm-iblock) (quote (list nil nil nil nil nil nil)) (quote t)) (vector (quote escm-iblock) (quote (list nil)) (quote t))) (lambda nil (define (fib n) (define (iter a b n) (if (= n 0) (+ a b) (iter b (+ a b) (- n 1)))) (iter 0 1 n)) (fib 10)) escm-vm::get-env-stack] 83] 179 180 (escm-vm::new) 181 ) 182 183 184 185 71 (when nil 186 72 187 73 (escm-vm::eval … … 237 123 (escm-eval '(fact 20)) 238 124 (fact 1) 239 ((elambda (a b) (+ a b)) 1 2) 240 ) 125 126 ((elambda (a b) (+ a b)) 1 2) ) 127 ) -
lang/elisp/escm/trunk/src/elisp/escm-arity.el
r10036 r10654 27 27 ;;; Code: 28 28 (require 'escm-base) 29 ;;(require 'escm-env)29 (require 'escm-env) 30 30 31 31 (escm-cbos::define-class (escm-arity escm-object) -
lang/elisp/escm/trunk/src/elisp/escm-base.el
r10036 r10654 22 22 (escm-unsupported ""))) 23 23 24 25 26 24 27 ;; variables 25 (defconst escm-compiler-v arsion 0.01)28 (defconst escm-compiler-version 0.01) 26 29 (defconst escm-icode::indent "" "") 27 30 31 ;; utilities that only in this project. 32 33 (defun escm-project-directory (purpose) 34 "Returns absolute path to the directory that is purposed by PURPOSE." 35 (expand-file-name 36 (case purpose 37 ((test) "test") 38 ((escm) "escm") 39 (t (signal 'error (list "unknown project-directory type" purpose)))) 40 (expand-file-name 41 "../" 42 (file-name-directory (locate-library "escm"))))) 28 43 29 44 (provide 'escm-base) -
lang/elisp/escm/trunk/src/elisp/escm-cbos.el
r9340 r10654 64 64 (get 'escm-cbos::class-fields class)) 65 65 66 (defsubst escm-cbos::register-class (name super fields) 67 "" 68 (put 'escm-cbos::class-vmt 69 name (let ((tbl (make-symbol (format "*spec:%s*" name)))) 70 (set tbl 71 (cons name 72 (symbol-value (get 'escm-cbos::class-vmt 73 super)))) 74 tbl)) 75 (let ((retval 66 (defsubst escm-cbos::make-class-info (name super fields) 67 "" 68 (unless (or (null super) 69 (escm-cbos::classp super)) 70 (signal 'error `(classp ,super))) 71 (let ((fields 76 72 (if super (append (escm-cbos::get-fields-of super) fields) fields))) 77 (put 'escm-cbos::class-fields name retval) 78 retval)) 73 (cons fields 74 `(progn 75 (put 'escm-cbos::class-fields ',name ',fields) 76 (put 'escm-cbos::class-vmt 77 ',name (let ((*tbl* (make-symbol (format "*spec:%s*" ',name)))) 78 (set *tbl* 79 (cons ',name 80 ',(symbol-value (get 'escm-cbos::class-vmt 81 super)))) 82 *tbl*)))))) 83 84 ;;(escm-cbos::make-class-info 'a nil '(c d)) 85 86 (defun escm-cbos::register-class (name super fields) 87 (eval (cdr (escm-cbos::make-class-info name super fields)))) 79 88 80 89 (defmacro escm-cbos::define-method (class name args &rest body) 81 90 "defines method of escm-cbos objects." 82 91 `(progn 83 ,(when (not (fboundp 'name))84 `(defsubst,name (*object* &rest args)92 (when (not (fboundp ',name)) 93 (defun ,name (*object* &rest args) 85 94 (escm-cbos::run-method ',name *object* args))) 86 95 ,(if (null class) … … 184 193 (let* ((name (car inhspec)) 185 194 (super (or (cadr inhspec) 'escm-cbos::Object)) 186 (fields (escm-cbos::register-class name super fields)) 195 (classinfo (escm-cbos::make-class-info name super fields)) 196 (fields (car classinfo)) 187 197 (len (length fields)) 188 198 (new (intern (format "create-%s" name))) 189 199 (pred (intern (format "%s-p" name)))) 190 200 `(progn 201 ,(cdr classinfo) 191 202 (defsubst ,new () 192 203 (let ((new (make-vector ,(+ 1 len) nil))) … … 292 303 (equal a b)) 293 304 294 (escm-cbos::define-method nil escm-cbos::stringify (self)295 (format "#<normal : %S>" self))296 297 305 (escm-cbos::define-method 298 306 escm-cbos::Object escm-cbos::stringify (self) -
lang/elisp/escm/trunk/src/elisp/escm-compile.el
r10036 r10654 30 30 (require 'escm-syntax ) 31 31 (require 'escm-icode ) 32 32 33 (require 'escm-env ) 33 (require 'escm-context) 34 (require 'escm-arity ) 35 36 ;;(require 'escm-context) 37 (escm-cbos::define-class 38 (escm-context escm-object t) 39 (vm) ;; virtual machine. 40 (env :copy) ;; environment of current context. 41 (tail? :copy) ;; non nil if current context is terminal. 42 (func? :copy)) 43 44 (defsubst escm-context::new (env &optional vm) 45 (let ((new (escm-context::set-env (create-escm-context) env))) 46 (escm-context::set-vm new vm) 47 new)) 48 49 (defsubst escm-context::push (self &optional syms) 50 (escm-context::new 51 (escm-dynamic-env::new (escm-context::get-env self) syms) 52 (escm-context::get-vm self))) 53 ;; 34 54 35 55 (defun escm-elize (context) 36 `(lambda(vm)37 (let ,(escm-context::get-all-symbols context)38 ,@(escm-context::build-object-definer context)39 ,@(escm-context::build-vm-manupilator context))))56 (list 'lambda '(vm) 57 (append (list 'let (escm-context::get-all-symbols context)) 58 (escm-context::build-object-definer context) 59 (escm-context::build-vm-manupilator context)))) 40 60 41 61 … … 67 87 ((and sexp 68 88 (symbolp sexp)) 69 (escm-icode `(( ,(if (escm-context::get-func? context) 'fref 'ref)70 ,sexp71 ,(escm-context::get-env context)))))89 (escm-icode (list (list (if (escm-context::get-func? context) 'fref 'ref) 90 sexp 91 (escm-context::get-env context))))) 72 92 73 93 ;; sexp 74 (t (escm-icode `((store ,sexp))))))94 (t (escm-icode (list (list 'store sexp)))))) 75 95 ;;(escm-vm::eval (escm-vm::new) '(+ 1 2)) 76 96 … … 88 108 89 109 (escm-test varref (equal (escm-test::p 'icode (escm-compile context 'a)) 90 (escm-icode `((ref a ,root)))))110 (escm-icode (list (list 'ref 'a root))))) 91 111 92 112 (escm-test::p 'built (escm-iproc::build (escm-compile context 'a))))) … … 105 125 (escm-context::set-func? context t) head)) 106 126 (escm-iproc::merge ret 107 (escm-icode `((,(if (escm-context::get-tail? context)108 'tcall109 'call)))))))127 (escm-icode (list (list (if (escm-context::get-tail? context) 128 'tcall 129 'call))))))) 110 130 ;;; test code 111 131 (escm-test::define-test escm escm-compile-apply … … 140 160 (when nega1 (escm-iblock::add-contents 141 161 posi0 (escm-inimonic::new 'jmp (list (length nega1))))) 142 (escm-iproc::merge condx (escm-icode `((ifv ,posi0 ,nega0))))162 (escm-iproc::merge condx (escm-icode (list (list 'ifv posi0 nega0)))) 143 163 (escm-iproc::merge condx (escm-iproc::new nega1)))) 144 164 … … 150 170 (when posi1 (escm-iblock::add-contents 151 171 nega0 (escm-inimonic::new 'jmp (list (length posi1))))) 152 (escm-iproc::merge condx (escm-icode `((ifv ,posi0 ,nega0))))172 (escm-iproc::merge condx (escm-icode (list (list 'ifv posi0 nega0)))) 153 173 (escm-iproc::merge condx (escm-iproc::new posi1)))) 154 174 … … 156 176 "" 157 177 (escm-iproc::merge negativex 158 (escm-icode `((jmp ,(escm-iproc::length positivex)))))178 (escm-icode (list (list 'jmp (escm-iproc::length positivex))))) 159 179 (escm-iproc::merge condx 160 (escm-icode `((jt ,(escm-iproc::length negativex)))))180 (escm-icode (list (list 'jt (escm-iproc::length negativex))))) 161 181 (escm-iproc::merge condx negativex) 162 182 (escm-iproc::merge condx positivex)) … … 212 232 (defun escm-compile-elamba (context sexp) 213 233 (let* ((elfun (byte-compile (cons 'lambda (cdr sexp))))) 214 (escm-icode `((store ,(escm-wrapped-proc::new elfun))))))215 216 (defun escm-compile-elmeth ( )234 (escm-icode (list (list 'store (escm-wrapped-proc::new elfun)))))) 235 236 (defun escm-compile-elmeth (context sexp) 217 237 (let* ((elfun (byte-compile (cons 'lambda (cdr sexp))))) 218 (escm-icode `((store ,(escm-wrapped-vm-method::new elfun)))))) 219 238 (escm-icode (list (list 'store (escm-wrapped-vm-method::new elfun)))))) 239 240 (defun escm-compile-set! (context sexp) 241 (let* ((sym (cadr sexp)) 242 (val (caddr sexp)) 243 (iproc (escm-compile (escm-context::set-tail? context nil) val))) 244 (escm-iproc::merge iproc 245 (escm-icode (list (list 'set! sym (escm-context::get-env context))))))) 220 246 221 247 … … 223 249 (let* ((bindings (cadr sexp)) 224 250 (body (cddr sexp)) 225 (name (unless (listp binding )251 (name (unless (listp bindings) 226 252 (let ((name bindings)) 227 253 (setq bindings (car body)) … … 238 264 bindings) 239 265 (when name (setq syms (cons name syms))) 240 (let ((proc (escm-compile context `(lambda ,syms ,body)))266 (let ((proc (escm-compile context (list 'lambda syms body))) 241 267 (ret (escm-iproc::new ()))) 242 268 243 269 (mapcar 244 270 (lambda (v) (escm-iproc::merge ret v)) 245 (if name (cons (escm-iproc `((store-to-arg ,proc))) vals)271 (if name (cons (escm-iproc (list (list 'store-to-arg proc))) vals) 246 272 vals)) 247 273 ret))) … … 257 283 name 258 284 (escm-syntax::new proc)) 259 (escm-icode `((store ',name)))))285 (escm-icode (list (list 'store (list 'quote name)))))) 260 286 261 287 (escm-test::define-test escm define-syntax … … 322 348 ;; 323 349 (defun escm-compile-lambda (context sexp) 324 (escm-icode `((store-proc ,(escm-compile-lambda1 context sexp)))))350 (escm-icode (list (list 'store-proc (escm-compile-lambda1 context sexp))))) 325 351 326 352 ;; … … 340 366 "compiled" 341 367 (escm-iproc::to-string 342 (escm-icode `((store-proc ,(escm-compile-lambda1 context sexp))))))368 (escm-icode (list (list 'store-proc (escm-compile-lambda1 context sexp)))))) 343 369 (funcall test (escm-compile-lambda1 context sexp)) 344 370 (funcall test (escm-vm::eval vm sexp)))) … … 349 375 (let ((body (cdr sexp))) 350 376 (escm-icode 351 `((store-proc352 ,(escm-wrapped-proc::new353 (if (= (length body) 1)354 body355 (byte-compile (cons 'lambda body)))))))))377 (list (list 'store-proc 378 (escm-wrapped-proc::new 379 (if (= (length body) 1) 380 body 381 (byte-compile (cons 'lambda body))))))))) 356 382 357 383 ;; … … 359 385 (let* ((spec (cadr sexp))) 360 386 (if (listp spec) 361 `(,(car spec) (lambda ,(cdr spec) ,@(cddr sexp))) 362 `(, name ,(caddr sexp))))) 387 (list (car spec) 388 (append (list 'lambda (cdr spec)) 389 (cddr sexp))) 390 (list spec 391 (caddr sexp))))) 363 392 364 393 ;; … … 370 399 (escm-env::define env name) 371 400 (escm-iproc::merge (escm-compile context body) 372 (escm-icode `((set! ,name ,env)373 (store ',name))))))401 (escm-icode (list (list 'set! name env) 402 (list 'store (list 'quote name))))))) 374 403 375 404 ;; … … 402 431 ;; 403 432 (defun escm-compile-quote (context sexp) 404 (escm-icode `((store ',(cadr sexp)))))433 (escm-icode (list (list 'store (list 'quote (cadr sexp)))))) 405 434 406 435 ;; … … 411 440 (escm-define-builtin-syntax 412 441
![(please configure the [header_logo] section in trac.ini)](/share/chrome/site/your_project_logo.png)