Changeset 10036 for lang/elisp

Show
Ignore:
Timestamp:
04/21/08 08:52:08 (8 months ago)
Author:
lieutar
Message:

lang/elisp/escm: I wrote "escm-elize-object" procedure. The procedure makes escm (mock scheme) to byte-compiled emacs-lisp.

Location:
lang/elisp/escm/trunk/src/elisp
Files:
1 added
13 modified

Legend:

Unmodified
Added
Removed
  • lang/elisp/escm/trunk/src/elisp/DEVELOPERSTOOLS.el

    r9340 r10036  
    2424;; sample codes 
    2525(when nil 
    26  
    2726  (escm-vm::eval (escm-vm::new)  '(+ 0 1 (* 2 3) 4)) 
    2827  (escm-vm::eval (escm-vm::new)  '(if nil 1 2)) 
     
    3130   '((lambda () 
    3231       (define (fact n) (if (= n 1) n (* n (fact (- n 1))))) 
    33        (fact 3)))) 
     32       (fact 10)))) 
    3433 
    3534  (progn  
     
    3938        (+ (fib (- n 2)) 
    4039           (fib (- n 1))))) 
    41     (fib 7)) 
    42  
    43   (escm-eval '(fib 7)) 
     40    (escm-eval '(fib 10))) 
    4441 
    4542  (escm-vm::eval 
     
    4845       (message (call/cc (lambda (cont) 
    4946                           (cont "abc"))))))) 
     47 
     48(escm-vm::eval 
     49 (escm-vm::new) 
     50 '((lambda () 
     51     (define (fib n) 
     52       (define (iter a b n) 
     53         (if (= n 0) (+ a b) (iter b (+ a b) (- n 1)))) 
     54       (iter 0 1 n)) 
     55     (fib 10)))) 
     56 
     57(insert (format "%S" 
     58                (escm-vm::byte-compile-sexp-list 
     59                 (escm-vm::new) 
     60                 '((define (fib n) 
     61                     (define (iter a b n) 
     62                       (if (= n 0) (+ a b) (iter b (+ a b) (- n 1)))) 
     63                     (iter 0 1 n)) 
     64                   (fib 10))) 
     65)) 
     66 
     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\352 I\210*  
     72 
     738\355 \2108\206\332\356 ! 
     748\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$ 
     80S\211\202Q\323$\"\210+\306\324\"\210\325 
     81%\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\" 
     90S\211\202Q\323\"\"\210+\306\324\"\210 \305C\311\325 
     91        #*\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\312 
     96B      S\211\202\313 
     97\"\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\203 
     116\312 
     117B      S\211\202\313 
     118\"\210+\306\310\"\210 \314C 
     119 
     120\315\316 
     121 #* 
     122\"\317\"\320!B\"\210*\306\321\"\210\310\311!  \307V\203a\312 
     123B      S\211\202Q\313 
     124\"\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\315 B 
     138S\211\202'\316 \"\210+\306\317\"\210\313 \302C 
     139 
     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\312 
     157B      S\211\202\313 
     158\"\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 
    50184 
    51185 
     
    59193           (+ (fib (- n 2)) 
    60194              (fib (- n 1))))) 
    61        (fib 7)))) 
     195       (fib 10)))) 
    62196 
    63197  (escm-vm::eval 
     
    89223          (funcall bm `((lambda () ,@def (fib 1)))) 
    90224          (funcall bm `((lambda () ,@def (fib 10)))) 
    91           (funcall bm `((lambda () ,@def (fib 100)))))) 
     225          (funcall bm `((lambda () ,@def (fib 15)))))) 
    92226 
    93227  (escm-vm::eval (escm-vm::new) '`a) 
  • lang/elisp/escm/trunk/src/elisp/escm-arity.el

    r9340 r10036  
    3232                         length 
    3333                         symbols 
    34                          at-least) 
     34                         at-least 
     35 
     36                         begin 
     37                         pos 
     38                         env) 
    3539 
    3640(defsubst escm-arity::new (argspec) 
  • lang/elisp/escm/trunk/src/elisp/escm-base.el

    r9340 r10036  
    22(require 'escm-cbos) 
    33(require 'escm-test) 
     4 
    45(escm-cbos::define-class (escm-object)) 
    56 
     
    2122   (escm-unsupported   ""))) 
    2223 
     24;; variables 
     25(defconst escm-compiler-varsion 0.01) 
     26(defconst escm-icode::indent "" "") 
     27 
     28 
    2329(provide 'escm-base) 
  • lang/elisp/escm/trunk/src/elisp/escm-compile.el

    r9340 r10036  
    3333(require 'escm-context) 
    3434 
     35(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)))) 
     40 
     41 
     42 
     43(defsubst escm-compile::sympp (sym) 
     44  (case (symbol-name sym) 
     45    (("`")  'quasiquote) 
     46    ((",")  'unquote) 
     47    ((",@") 'unquote-splicing) 
     48    (t sym))) 
     49 
    3550(defun escm-compile (context sexp) 
    3651  "Compiles sexp." 
    3752  (cond 
     53   ;; applying procedure  or expanding macro 
    3854   ((and sexp (consp sexp)) 
    3955    (let* ((head  (car sexp)) 
     
    4157           (headv (when (symbolp head) 
    4258                    (condition-case *err* 
    43                         (escm-env::gref env head) 
     59                        (escm-env::gref env (escm-compile::sympp head)) 
    4460                      (escm-void-variable))))) 
    4561      (cond 
     
    4763        (escm-syntax::apply headv context sexp)) 
    4864       (t (escm-compile-apply context sexp))))) 
     65 
     66   ;; refering symbol-value 
    4967   ((and sexp 
    5068         (symbolp sexp)) 
     
    5270                    ,sexp 
    5371                    ,(escm-context::get-env context))))) 
    54    (t              (escm-icode `((store  ,sexp)))))) 
     72 
     73   ;; sexp 
     74   (t (escm-icode `((store  ,sexp)))))) 
    5575;;(escm-vm::eval (escm-vm::new) '(+ 1 2)) 
    5676 
     
    112132;; (escm-test::run 'escm 'escm-compile-apply) 
    113133 
     134 
    114135(defsubst escm-compile-if::ifv0 (context condx positivex negativex) 
    115136  "" 
     
    192213  (let* ((elfun (byte-compile (cons 'lambda (cdr sexp))))) 
    193214    (escm-icode `((store ,(escm-wrapped-proc::new elfun)))))) 
     215 
     216(defun escm-compile-elmeth () 
     217  (let* ((elfun (byte-compile (cons 'lambda (cdr sexp))))) 
     218    (escm-icode `((store ,(escm-wrapped-vm-method::new elfun)))))) 
    194219 
    195220 
     
    288313                       (escm-compile (escm-context::set-tail? ctx t) last)) 
    289314    (escm-iproc::merge proc (escm-icode '((ret)))) 
    290     (escm-iproc::to-proc proc arity (escm-context::get-env ctx)))) 
     315    (escm-iproc::to-proc 
     316     proc 
     317     arity 
     318     (let ((env (escm-context::get-env ctx))) 
     319       (escm-env::set-parent env nil) 
     320       env)))) 
    291321 
    292322;; 
     
    388418     (define        escm-compile-define) 
    389419     (lambda        escm-compile-lambda) 
    390      (elambda       escm-compile-elambda))) 
     420     (elambda       escm-compile-elambda) 
     421     (elmeth        escm-compile-elmeth))) 
    391422 
    392423   (escm-vm::eval 
     
    394425    '(define-syntax quasiquote 
    395426         (lambda (_ . body) 
    396            (expand-quasiquote (list 'quote body))))) 
    397   ) 
     427           (expand-quasiquote (list 'quote body)))))) 
    398428 
    399429(add-hook 'escm-vm::init-hook (function escm-compile::init-vm)) 
  • lang/elisp/escm/trunk/src/elisp/escm-context.el

    r9340 r10036  
    3131(escm-cbos::define-class 
    3232 (escm-context escm-object t) 
    33  (objdic :copy)  ;; created objects. 
     33 (objdic)        ;; created objects. 
     34 (vm)            ;; virtual machine. 
     35 (rootenv)       ;; 
    3436 (env    :copy)  ;; environment of current context. 
    35  (vm     :copy)  ;; virtual machine. 
    3637 (tail?  :copy)  ;; non nil if current context is terminal. 
    3738 (func?  :copy)) 
    3839 
    39 (defconst escm-context::gensym::counter 0) 
    40 (defsubst escm-context::gensym () 
    41   (intern 
    42    (format "escm-context::gensym::symbol::%s" 
    43            (setq escm-context::gensym::counter 
    44                  (1+ escm-context::gensym::counter))))) 
    4540 
    4641(defsubst escm-context::new (env &optional vm objdic) 
    47   (escm-context::set-objdic 
    48    (escm-context::set-vm 
    49     (escm-context::set-env 
    50      (create-escm-context) 
    51      env) 
    52     vm) 
    53    (or objdic (list nil)))) 
    54  
     42  (let ((new (escm-context::set-env (create-escm-context) env))) 
     43    ;;(escm-context::set-objdic new (or objdic (escm-context::gensym))) 
     44    (escm-context::set-vm     new vm) 
     45    new)) 
    5546 
    5647(defsubst escm-context::push (self &optional syms) 
     
    6051   (escm-context::get-objdic self))) 
    6152 
    62 (defsubst escm-context::define (self obj) 
    63   (let ((sym (escm-context::gensym)) 
    64         (dic (escm-context::get-objdic self))) 
    65     (set-car dic (cons (cons sym val) 
    66                        (car dic))) 
    67     sym)) 
    68  
    69 (defsubst escm-context::elize (self) 
    70   `(let* 
    71        ,(mapcar 
    72          (lambda (step) 
    73            (list (car step) 
    74                  (escm-object::to-source (cdr spec)))) 
    75          (reverse (car 
    76                    (escm-context::get-objdic 
    77                     self)))))) 
    7853 
    7954;;; 
    8055(escm-cbos::define-class (escm-reference escm-object) (sym)) 
     56 
    8157(defsubst escm-reference::new (sym) 
    8258  (let ((new (create-escm-reference))) 
     
    8460    new)) 
    8561 
    86 (escm-cbos::define-method nil escm-object::elize (context self) 
    87   (cond 
    88    ((consp self) (list 'quote self)) 
     62(defsubst escm-context::define (self obj) 
     63  (let ((sym (escm-util::gensym)) 
     64        (dic (escm-context::get-objdic self))) 
     65    (put dic sym val) 
     66    (escm-reference::new sym))) 
     67 
     68(defsubst escm-context::ref (self sym) 
     69  (get (escm-context::get-objdic self) sym)) 
     70 
     71(defsubst escm-context::get-all-symbols (self) 
     72  (mapcar 'car (escm-util::plist-to-alist 
     73                (symbol-plist (escm-context::get-objdic self))))) 
     74 
     75(defsubst escm-context::build-object-definer (self) 
     76  (mapcar (lambda (def) 
     77            `(setq ,(car def) 
     78                   ,(escm-object::elize (cdr def))) 
     79            (escm-util::plist-to-alist 
     80             (symbol-plist (escm-context::get-objdic self)))))) 
     81 
     82(defsubst escm-context::build-vm-manupilator (self) 
     83  `(funcall ,( 
     84              ;; Get reference of top -level form 
     85              ) 
     86            vm)) 
     87 
     88 
     89(defsubst escm-object::value-default (self context) 
     90  (cond  
     91   ((null self) nil) 
     92   ((consp self) 
     93    (cons (escm-object::value (car self) context)) 
     94    (cons (escm-object::value (cdr self) context))) 
     95   ((vectorp self) 
     96    (apply 'vector 
     97           (mapcar (lambda (v) (escm-object::value v context)) 
     98                   self))) 
    8999   (t self))) 
    90100 
    91 (escm-cbos::define-method nil escm-object::value (context self) self) 
    92101 
    93 (escm-cbos::define-method escm-reference escm-object::elize (context self) 
    94   (escm-reference::get-sym self)) 
    95102 
    96 (escm-cbos::define-method escm-reference escm-object::value (context self) self 
     103 
     104 
     105 
     106 
     107(escm-cbos::define-method nil escm-object::value (self context) 
     108  (escm-object::value-default self context)) 
     109 
     110(escm-cbos::define-method 
     111  escm-reference escm-object::value (self context) self 
    97112  (escm-context::ref context (escm-reference::get-sym self))) 
    98113 
    99 (escm-cbos::define-method escm-env escm-object::elize (context self) 
    100   (let* ((syms   (escm-env::get-fields self)) 
    101          (symval (mapcar (lambda (s) (cons s (escm-env::gref self s))) syms))) 
    102     `(let ((e (escm-fixed-env::new ,syms))) 
    103        ,@(mapcar (lambda (sv) 
    104                    `(escm-env::gset! 
    105                      e ',(car sv) ,(escm-object::elize (cdr sv)))) 
    106                  symval) 
    107        e))) 
    108  
    109 (escm-cbos::define-method escm-proc escm-object::elize (self) 
    110   ) 
     114(escm-cbos::define-method escm-reference escm-object::elize (self context) 
     115  (escm-reference::get-sym self)) 
    111116 
    112117(provide 'escm-context) 
  • lang/elisp/escm/trunk/src/elisp/escm-env.el

    r9340 r10036  
    2929(defconst escm-env::class-diagram nil " 
    3030 
    31                              +--------------+ 
    32                              |   escm-env   | 
    33                              | <<abstract>> | 
    34                              +--------------+ 
    35                                     A 
    36                                     | 
    37           +-------------------+-----+---------------+---------+ 
    38           |                   |                     |         | 
    39  +----------------+  +--------+---------+  +--------+-------+ | 
    40  | escm-fixed-env |<-+ escm-dynamic-env |  | escm-elisp-env | | 
    41  +----------------+  -------------------+  +--------+-------+ | 
    42                               A                     |         | 
    43                               |                     |         | 
    44                        +------+--------+            |         | 
    45                        | escm-root-env |<>----------+         | 
    46                        +---------------+          +-----------+-----------+ 
    47                                                   | escm-wrapped-proc-env | 
    48                                                   +-----------------------+ 
    49  
    50   escm-env              ... abstract root class of escm environment. 
    51   escm-fixed-env        ... runtime environment for any procedures. 
    52   escm-dynamic-env      ... it derives escm-fixed-env. 
    53   escm-root-env         ... environment that exists when vm initialized. 
    54   escm-elisp-env        ... this is able to access to native elisp environment. 
    55   escm-wrapped-proc-env ... pseudo env for procedure that wrapped elisp function. 
    56  
     31                               +--------------+ 
     32                               |   escm-env   | 
     33                               | <<abstract>> | 
     34                               +------+-------+ 
     35                                     /_\ 
     36                                      | 
     37                  +-------------------+---------------------+---------+ 
     38                  |                   |                     |         | 
     39         +----------------+  +--------+---------+  +--------+-------+ | 
     40         | escm-fixed-env |<-+ escm-dynamic-env |  | escm-elisp-env | | 
     41         +--------+-------+  +--------+---------+  +----------+-----+ | 
     42                 /_\                 /_\                      |       | 
     43                  |                   |                       |       | 
     44          +-------+               +---+-----------------+     |       | 
     45          |                       |                     |    < >      | 
     46   +------+-------+     +---------+------------+ +------+-----+--+    | 
     47   | escm-library |<----+ escm-dynamic-library | | escm-root-env |    | 
     48   +--------------+     +----------------------+ +---------------+    | 
     49                                                     +----------------+------+ 
     50                                                     | escm-wrapped-proc-env | 
     51                                                     +-----------------------+ 
     52     
     53  escm-env              ... Abstract root class of escm environment. 
     54  escm-fixed-env        ... Runtime environment for any procedures. 
     55  escm-dynamic-env      ... It derives escm-fixed-env. 
     56  escm-root-env         ... Environment that exists when vm initialized. 
     57  escm-elisp-env        ... This is able to access to native elisp environment. 
     58  escm-wrapped-proc-env ... Pseudo env for procedure that wrapped elisp function. 
     59  escm-library          ... Library that specified by R6RS. 
     60  escm-dynamic-library  ... Compiling time library that specified by R6RS. 
    5761") 
    5862 
     
    218222(require 'escm-arity) 
    219223(escm-cbos::define-class (escm-dynamic-env escm-env) 
    220                          valdic arity fields) 
     224                         valdic 
     225                         arity 
     226                         fields) 
    221227 
    222228(defsubst escm-dynamic-env::new (parent list) 
     
    289295                                  (eq 3 (escm-env::gref gg 'a)))))) 
    290296;; (escm-test::run 'escm 'dynamic-env) 
     297 
     298(escm-cbos::define-class (escm-pseudo-env escm-dynamic-env)) 
     299(defsubst escm-pseudo-env::new (parent) 
     300  (let ((new (create-escm-pseudo-env))) 
     301    new)) 
     302 
     303(escm-cbos::define-method 
     304  escm-pseudo-env escm-env::define (self sym) 
     305  ()) 
     306 
     307 
     308 
    291309 
    292310;;; 
  • lang/elisp/escm/trunk/src/elisp/escm-iblock-content.el

    r9340 r10036  
    5555               ,(escm-env::make-function-referer env '*env* sym))) 
    5656           nil 
    57            nil) 
     57           ((store . (lambda (self prev) self)))) 
    5858 
    5959    ;; 
     
    6363               ,(escm-env::make-referer env '*env* sym))) 
    6464           nil 
    65            nil) 
     65           ((store . (lambda (self prev) self)))) 
    6666 
    6767    ;; 
     
    8383             `(escm-vm::set-current-val vm ,val)) 
    8484           nil 
    85            nil) 
     85           ((store . (lambda (self prev) self)))) 
    8686 
    8787    ;;  
     
    185185                    (escm-proc::activate ,val vm))) 
    186186                nil 
    187                 nil) 
     187                ((store . (lambda (self prev) self)))) 
    188188 
    189189    ;; 
  • lang/elisp/escm/trunk/src/elisp/escm-iblock.el

    r9340 r10036  
    115115(defsubst escm-iblock::build (self &optional p) 
    116116  (let ((p (or p 0))) 
    117 ;;    (byte-compile 
     117    (byte-compile 
    118118     `(lambda (vm *env*) 
    119119        ,@(mapcar (lambda (ic) 
     
    122122                      r)) 
    123123                  (escm-iblock::get-body self))) 
    124 ;;     ) 
     124     ) 
    125125    )) 
    126126 
  • lang/elisp/escm/trunk/src/elisp/escm-icode.el

    r9340 r10036  
    5252                                         +---------------+ 
    5353") 
    54 (defconst escm-icode::indent "" "") 
     54 
    5555 
    5656