Skip to content

Commit 59a1f18

Browse files
committed
c4 9 - 12
1 parent 2fd4e02 commit 59a1f18

File tree

6 files changed

+40
-0
lines changed

6 files changed

+40
-0
lines changed

src/eval/c4_10.scm

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
; this can be achieved by modifying the variable?, begin? func ...
2+
; and corresponding make func

src/eval/c4_11.scm

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
; in eval.scm

src/eval/c4_12.scm

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
; wtf

src/eval/c4_9_unfinished.scm

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
; in eval.scm
2+
;

src/eval/demo.scm

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
(define (fib n)
2+
(display (let fib-iter ((a 1)
3+
(b 0)
4+
(count n))
5+
(if (= count 0)
6+
b
7+
(fib-iter (+ a b) a (- count 1))))
8+
)
9+
(display fib-iter)
10+
)
11+
12+
13+
((lambda ()
14+
(define fib-iter
15+
(lambda (a b count)
16+
(if (= count 0)
17+
b
18+
(fib-iter (+ a b) a (- count 1))
19+
)
20+
))
21+
(fib-iter 1 0 10)
22+
)
23+
)

src/eval/eval.scm

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
((or? exp) (seck-eval (or->if exp) env))
4141
((let? exp) (seck-eval (let->combination exp) env))
4242
((letstar? exp) (seck-eval (let*->nested-let exp) env))
43+
((for? exp) (seck-eval (for->let exp) env))
4344
((application? exp)
4445
(seck-apply (seck-eval (operator exp) env)
4546
(list-of-values (operand exp) env)))
@@ -452,6 +453,16 @@
452453
(let-vals exp) ; todo
453454
))
454455

456+
; @(for)
457+
458+
(define (for? exp)
459+
(tagged-list? exp 'for))
460+
(define (for-init exp) (cadr exp))
461+
(define (for-can-continue exp) (caddr exp))
462+
(define (for-step exp) (cadddr exp))
463+
(define (for-body exp) (cddddr exp))
464+
465+
455466
; @(application)
456467
(define application? pair?)
457468
(define (operator exp) (car exp))

0 commit comments

Comments
 (0)