summaryrefslogtreecommitdiff
path: root/_tests/eval.scm
blob: accd8580e7388fc0a8c657e4989def14fa3dd873 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25



(define (eval form module)
  (cond
   ((const? form) form)
   ((id? form) (lookup form module))
   ((list? form)
    (let ((len (list-len form))
          (ptr (list-ptr form)))
      (eval-list ptr len module)))))

(define (eval-list ptr len module)
  (let ((first ptr[0]))
    (cond
     ((funcall? first)
      (let ((fun-ptr (funcall-ptr first))
            (argv (eval-args ptr len module)))
        (funcall fun-ptr argv)))
     (()))))