Next: 2 インタプリタの実行例
Up: 1 Schemeインタプリタの実現
Previous: 1.3 通常の手続き(関数)の処理
前節で説明したように car などのリスト処理用基本手続きのほか,数値計算,
入出力処理などを行なう基本手続き,さらに特殊な大域変数などをあらかじめ
定義しておくための手続き init-scheme-interpreter は以下のようになりま
す.
(defun init-scheme-interpreter nil
(set-global-var! 't t)
(set-global-var! 'nil nil)
(set-global-var! 'pi pi)
(set-global-var! 'get (symbol-function 'get))
(set-global-var! 'put
#'(lambda (sym key value)
(setf (get sym key) value)))
(mapc
#'(lambda (pair)
(set-global-var! (car pair)
(symbol-function (cadr pair))))
'((+ +) (- -) (* *) (/ /) (abs abs)
(sqrt sqrt)
(sin sin) (cos cos) (atan atan)
(= =) (< <) (> >) (<= <=) (>= >=)
(cons cons) (car car) (cdr cdr)
(not not) (append append)
(list list) (member member)
(null? null) (eq? eq) (equal? equal) (eqv? eql)
(read read)
(write prin1) (display princ) (newline terpri)))
)
generated through LaTeX2HTML. M.Inaba 平成18年5月6日