「grass.el(0.1.8)/defun grass-eval-machine」の編集履歴(バックアップ)一覧に戻る
(cond ((eq (caar code) 'app)
(let ((m (cadr (car code))) (n (nth 2 (car code))) (c (cdr code)))
(if (grass-primitive-p (nth (1- m) env))
;; Em is a primitive (list c (cons (funcall (grass-primitive-func (nth (1- m) env)) (nth (1- n) env)) env) dump)
;; Em is a list (list (car (nth (1- m) env)) (cons (nth (1- n) env) (cdr (nth (1- m) env))) (cons (cons c env) dump)))))
((eq (caar code) 'abs)
(let ((n (cadr (car code))) (cc (nth 2 (car code))) (c (cdr code)))
(if (eq n 1)
;; (Abs(n, C') :: C, E, D) → (C, (C', E) :: E, D) if n = 1 (list c (cons (cons cc env) env) dump)
;; (Abs(n, C') :: C, E, D) → (C, (Abs(n - 1, C')::・, E) :: E, D) if n > 1 (list c (cons (cons (list (list 'abs (1- n) cc)) env) env) dump))))
((null code)
;; (・, f :: E, (C', E') :: D) → (C', f :: E', D) (and dump (list (caar dump) (cons (car env) (cdar dump)) (cdr dump))))
(t (error "grass-eval: runtime error"))))
更新日 | 更新者 | 更新内容 |