Add "#@" to lambdas/templates and their string/vector fields.

This makes the values immutable, which is now enforced by the interpreter.
This commit is contained in:
Jesse D. McDonald 2010-10-08 20:52:00 -05:00
parent 03c3dec091
commit cc16957256
21 changed files with 317 additions and 317 deletions

View File

@ -1,30 +1,30 @@
#S(#="lambda"
#(
#@#S(#="lambda"
#@#(
(
#0=#S(#="structure"
#@#0=#S(#="structure"
(#="structure")
5
#f
)
#1=#S(#=0
#@#1=#S(#=0
(#="structure")
5
#f
"annotated-structure"
#(
"supers"
"nslots"
"callable"
"name"
"slot-names"
#@"annotated-structure"
#@#(
#@"supers"
#@"nslots"
#@"callable"
#@"name"
#@"slot-names"
)
)
#2=#S(#=1
#@#2=#S(#=1
(#="lambda")
8
#f
"annotated-lambda"
#(
#@"annotated-lambda"
#@#(
"global-vars"
"instance-vars"
"frame-vars"
@ -36,17 +36,17 @@
)
)
)
#S(#=2
#(("OK") #f)
#()
#@#S(#=2
#@#(("OK") #f)
#@#()
0
""
"\xff\x01\x00\x00\x02\x02"
#@""
#@"\xff\x01\x00\x00\x02\x02"
)
)
#()
#@#()
0
""
"\x02\xfd\xfe\xff"
#@""
#@"\x02\xfd\xfe\xff"
)
; vim:set syntax= sw=3 expandtab:

View File

@ -3,30 +3,30 @@
; (lambda (number-string)
; (fact (string->number number-string)))
#S(#="lambda"
#@#S(#="lambda"
; (lambda (number-string)
; (let/cc k
; (call-with-values
; (lambda () (string->number number-string))
; (lambda (n) (k (fact n))))))
#(
#@#(
#="string->number"
#S(#="template"
#@#S(#="template"
; (let/cc k
; (lambda (n)
; (k (fact n))))
#(
#@#(
#i"../lib/math/fact.rla"
)
"\xfe\xff" ; ctx k
#@"\xfe\xff" ; ctx k
0
""
"\x01\xfb\x00\x00\x40\x41"
#@""
#@"\x01\xfb\x00\x00\x40\x41"
)
)
#()
#@#()
0
""
"\x01\xfb\x00\x00\xfe\x02"
#@""
#@"\x01\xfb\x00\x00\xfe\x02"
)
; vim:set syntax= sw=2 expandtab:

View File

@ -1,23 +1,23 @@
#S(#="lambda"
#@#S(#="lambda"
; (define (test-and)
; (and (lambda () 3)
; (lambda () #t)
; (lambda () 4)
; (lambda () #f)
; (lambda () 5)))
#(
#@#(
#i"../lib/primitive/and.rla"
(
#S(#="lambda" #(( 3) #f) #() 0 "" "\xff\x01\x00\x00\x02\x02")
#S(#="lambda" #((#t) #f) #() 0 "" "\xff\x01\x00\x00\x02\x02")
#S(#="lambda" #(( 4) #f) #() 0 "" "\xff\x01\x00\x00\x02\x02")
#S(#="lambda" #((#f) #f) #() 0 "" "\xff\x01\x00\x00\x02\x02")
#S(#="lambda" #(( 5) #f) #() 0 "" "\xff\x01\x00\x00\x02\x02")
#@#S(#="lambda" #@#(( 3) #f) #@#() 0 #@"" #@"\xff\x01\x00\x00\x02\x02")
#@#S(#="lambda" #@#((#t) #f) #@#() 0 #@"" #@"\xff\x01\x00\x00\x02\x02")
#@#S(#="lambda" #@#(( 4) #f) #@#() 0 #@"" #@"\xff\x01\x00\x00\x02\x02")
#@#S(#="lambda" #@#((#f) #f) #@#() 0 #@"" #@"\xff\x01\x00\x00\x02\x02")
#@#S(#="lambda" #@#(( 5) #f) #@#() 0 #@"" #@"\xff\x01\x00\x00\x02\x02")
)
)
#()
#@#()
0
""
"\x01\x02\x00\x00\xfe\xff"
#@""
#@"\x01\x02\x00\x00\xfe\xff"
)
; vim:set syntax= sw=2 expandtab:

View File

@ -1,13 +1,13 @@
#S(#="lambda"
#@#S(#="lambda"
; (define (test-append)
; (append '(1 2 3) (4 5) (6 7 8 9)))
#(
#@#(
#i"../lib/primitive/append.rla"
((1 2 3) (4 5) (6 7 8 9))
)
#()
#@#()
0
""
"\x01\x02\x00\x00\xfe\xff"
#@""
#@"\x01\x02\x00\x00\xfe\xff"
)
; vim:set syntax= sw=2 expandtab:

View File

@ -1,29 +1,29 @@
#S(#="lambda"
#@#S(#="lambda"
; (define (test-foldl)
; (foldl + 0 '(2 3 4 5)))
#(
#@#(
#i"../lib/primitive/foldl.rla"
(
#S(#="lambda"
#@#S(#="lambda"
; (define (+ x y)
; (fix+ x y))
#(#f)
#()
#@#(#f)
#@#()
2
"\x00\x80\x03\xfb\; (set! f0 (car argv))
#@"\x00\x80\x03\xfb\; (set! f0 (car argv))
\x00\x81\x04\xfb\; (set! f1 (cdr argv))
\x00\x81\x03\x81\; (set! f1 (car f1))
\x08\x80\x80\x81\; (set! f0 (fix+ f0 f1))
\x02\x80\x80\x00"; (set! f0 (cons f0 nil))
"\xff\x80\x00\x00\x01\x01"
#@"\xff\x80\x00\x00\x01\x01"
)
0
(2 3 4 5)
)
)
#()
#@#()
0
""
"\x01\x02\x00\x00\xfe\xff"
#@""
#@"\x01\x02\x00\x00\xfe\xff"
)
; vim:set syntax= sw=2 expandtab:

View File

@ -1,29 +1,29 @@
#S(#="lambda"
#@#S(#="lambda"
; (define (test-foldr)
; (foldr + 0 '(2 3 4 5)))
#(
#@#(
#i"../lib/primitive/foldr.rla"
(
#S(#="lambda"
#@#S(#="lambda"
; (define (+ x y)
; (fix+ x y))
#(#f)
#()
#@#(#f)
#@#()
2
"\x00\x80\x03\xfb\; (set! f0 (car argv))
#@"\x00\x80\x03\xfb\; (set! f0 (car argv))
\x00\x81\x04\xfb\; (set! f1 (cdr argv))
\x00\x81\x03\x81\; (set! f1 (car f1))
\x08\x80\x80\x81\; (set! f0 (fix+ f0 f1))
\x02\x80\x80\x00"; (set! f0 (cons f0 nil))
"\xff\x80\x00\x00\x01\x01"
#@"\xff\x80\x00\x00\x01\x01"
)
0
(2 3 4 5)
)
)
#()
#@#()
0
""
"\x01\x02\x00\x00\xfe\xff"
#@""
#@"\x01\x02\x00\x00\xfe\xff"
)
; vim:set syntax= sw=2 expandtab:

View File

@ -1,13 +1,13 @@
#S(#="lambda"
#@#S(#="lambda"
; (define (test-list)
; (list 2 3 4 5))
#(
#@#(
#i"../lib/primitive/list.rla"
(1 2 3 4 5)
)
#()
#@#()
0
""
"\x01\x02\x00\x00\xfe\xff"
#@""
#@"\x01\x02\x00\x00\xfe\xff"
)
; vim:set syntax= sw=2 expandtab:

View File

@ -1,16 +1,16 @@
#S(#="lambda"
#@#S(#="lambda"
; (define (test-map)
; (map list '(2 3 4 5)))
#(
#@#(
#i"../lib/primitive/map.rla"
(
#i"../lib/primitive/list.rla"
(2 3 4 5)
)
)
#()
#@#()
0
""
"\x01\x02\x00\x00\xfe\xff"
#@""
#@"\x01\x02\x00\x00\xfe\xff"
)
; vim:set syntax= sw=2 expandtab:

View File

@ -1,23 +1,23 @@
#S(#="lambda"
#@#S(#="lambda"
; (define (test-or)
; (and (lambda () #f)
; (lambda () 3)
; (lambda () #f)
; (lambda () #t)
; (lambda () #f)))
#(
#@#(
#i"../lib/primitive/or.rla"
(
#S(#="lambda" #((#f) #f) #() 0 "" "\xff\x01\x00\x00\x02\x02")
#S(#="lambda" #(( 3) #f) #() 0 "" "\xff\x01\x00\x00\x02\x02")
#S(#="lambda" #((#f) #f) #() 0 "" "\xff\x01\x00\x00\x02\x02")
#S(#="lambda" #((#t) #f) #() 0 "" "\xff\x01\x00\x00\x02\x02")
#S(#="lambda" #((#f) #f) #() 0 "" "\xff\x01\x00\x00\x02\x02")
#@#S(#="lambda" #@#((#f) #f) #@#() 0 #@"" #@"\xff\x01\x00\x00\x02\x02")
#@#S(#="lambda" #@#(( 3) #f) #@#() 0 #@"" #@"\xff\x01\x00\x00\x02\x02")
#@#S(#="lambda" #@#((#f) #f) #@#() 0 #@"" #@"\xff\x01\x00\x00\x02\x02")
#@#S(#="lambda" #@#((#t) #f) #@#() 0 #@"" #@"\xff\x01\x00\x00\x02\x02")
#@#S(#="lambda" #@#((#f) #f) #@#() 0 #@"" #@"\xff\x01\x00\x00\x02\x02")
)
)
#()
#@#()
0
""
"\x01\x02\x00\x00\xfe\xff"
#@""
#@"\x01\x02\x00\x00\xfe\xff"
)
; vim:set syntax= sw=2 expandtab:

View File

@ -1,13 +1,13 @@
#S(#="lambda"
#@#S(#="lambda"
; (define (test-reverse)
; (reverse '(2 3 4 5))
#(
#@#(
#i"../lib/primitive/reverse.rla"
((2 3 4 5))
)
#()
#@#()
0
""
"\x01\x02\x00\x00\xfe\xff"
#@""
#@"\x01\x02\x00\x00\xfe\xff"
)
; vim:set syntax= sw=2 expandtab:

View File

@ -4,57 +4,57 @@
; 1
; (* n (fact (- n 1)))))
#0=#S(#="lambda"
#@#0=#S(#="lambda"
; (define (fact n)
; ((if (< n 1)
; (lambda () 1)
; (lambda () ... n fact ...))))
#(
#@#(
1
#S(#="lambda"
#@#S(#="lambda"
; (lambda _ 1)
#((1) #f)
#()
#@#((1) #f)
#@#()
0
""
"\xff\x01\x00\x00\x02\x02"
#@""
#@"\xff\x01\x00\x00\x02\x02"
)
#S(#="template"
#@#S(#="template"
; (let [n]
; (lambda _
; (let/cc k
; (call-with-values
; (lambda () (fact (- n 1)))
; (lambda (m) (k (* n m)))))))
#(
#@#(
1
#S(#="template"
#@#S(#="template"
; (let (n)
; (let/cc k
; (lambda (m)
; (k (* n m)))))
#(#f)
"\x40\xff" ; i0 k
#@#(#f)
#@"\x40\xff" ; i0 k
1
"\x00\x80\x03\xfb\; (set! f0 (car argv))
#@"\x00\x80\x03\xfb\; (set! f0 (car argv))
\x0a\x80\x40\x80\; (set! f0 (fix* i0 f0))
\x02\x80\x80\x00"; (set! f0 (cons f0 nil))
"\x41\x80\x00\x00\x01\x01"
#@"\x41\x80\x00\x00\x01\x01"
)
#=0 ; fact
)
"\x80"
#@"\x80"
1
"\x09\x80\x40\x01\; (set! f0 (fix- i0 g1))
#@"\x09\x80\x40\x01\; (set! f0 (fix- i0 g1))
\x02\x80\x80\x00"; (set! f0 (cons f0 nil))
"\x03\x80\x00\x00\xfe\x02"
#@"\x03\x80\x00\x00\xfe\x02"
)
)
#()
#@#()
2
"\x00\x80\x03\xfb\; (set! f0 (car argv))
#@"\x00\x80\x03\xfb\; (set! f0 (car argv))
\x0d\x81\x80\x01\; (set! f1 (fix< f0 g1))
\x81\x81\x02\x03"; (set! f1 (if f1 g2 g3))
"\x81\x00\x00\x00\xfe\xff"
#@"\x81\x00\x00\x00\xfe\xff"
)
; vim:set syntax= sw=2 expandtab:

View File

@ -1,10 +1,10 @@
#S(#="lambda"
#@#S(#="lambda"
; (define (acons a b lst)
; (cons a (cons b lst)))
#(#f)
#()
#@#(#f)
#@#()
3
"\x00\x80\x03\xfb\; (set! f0 (car argv))
#@"\x00\x80\x03\xfb\; (set! f0 (car argv))
\x00\x82\x04\xfb\; (set! f2 (cdr argv))
\x00\x81\x03\x82\; (set! f1 (car f2))
\x00\x82\x04\x82\; (set! f2 (cdr f2))
@ -12,6 +12,6 @@
\x02\x81\x81\x82\; (set! f1 (cons f1 f2))
\x02\x80\x80\x81\; (set! f0 (cons f0 f1))
\x02\x80\x80\x00"; (set! f0 (cons f0 nil))
"\xff\x80\x00\x00\x01\x01"
#@"\xff\x80\x00\x00\x01\x01"
)
; vim:set syntax= sw=2 expandtab:

View File

@ -11,40 +11,40 @@
; #t
; fns))
#S(#="lambda"
#(
#@#S(#="lambda"
#@#(
#i"foldl.rla"
#S(#="template"
#@#S(#="template"
; (lambda (fn _)
; (let/cc k2
; ((lambda (x)
; ((if x k2 k) x))
; (fn))))
#(
#S(#="template"
#@#(
#@#S(#="template"
; (lambda (x)
; ((if x k2 k) x))
#(#f)
"\x40\xff" ; i0 k
#@#(#f)
#@"\x40\xff" ; i0 k
1
"\x00\x80\x03\xfb\; (set! f0 (car argv))
#@"\x00\x80\x03\xfb\; (set! f0 (car argv))
\x80\x80\x41\x40"; (set! f0 (if f0 i1 i0))
"\x80\xfb\x00\x00\x01\x01"
#@"\x80\xfb\x00\x00\x01\x01"
)
)
"\xff" ; k
#@"\xff" ; k
1
"\x00\x80\x03\xfb"; (set! f0 (car argv))
"\x80\x00\x00\x00\xfe\x01"
#@"\x00\x80\x03\xfb"; (set! f0 (car argv))
#@"\x80\x00\x00\x00\xfe\x01"
)
#t
)
#()
#@#()
2
"\x02\x80\xfb\x00\; (set! f0 (cons argv nil))
#@"\x02\x80\xfb\x00\; (set! f0 (cons argv nil))
\x02\x80\x03\x80\; (set! f0 (cons g3 f0))
\x00\x81\x1b\x02\; (set! f1 (lambda g2))
\x02\x80\x81\x80"; (set! f0 (cons f1 f0))
"\x01\x80\x00\x00\xfe\xff"
#@"\x01\x80\x00\x00\xfe\xff"
)
; vim:set syntax= sw=2 expandtab:

View File

@ -6,30 +6,30 @@
; nil
; lsts))
#S(#="lambda"
#(
#@#S(#="lambda"
#@#(
#i"foldr.rla"
#S(#="lambda"
#(
#@#S(#="lambda"
#@#(
#i"foldr.rla"
#i"cons.rla"
)
#()
#@#()
2
"\x00\x80\x03\xfb\; (set! f0 (car argv))
#@"\x00\x80\x03\xfb\; (set! f0 (car argv))
\x02\x81\x80\x00\; (set! f1 (cons f0 nil))
\x00\x80\x04\xfb\; (set! f0 (cdr argv))
\x00\x80\x03\x80\; (set! f0 (car f0))
\x02\x81\x80\x81\; (set! f1 (cons f0 f1))
\x02\x81\x02\x81"; (set! f1 (cons g2 f1))
"\x01\x81\x00\x00\xfe\xff"
#@"\x01\x81\x00\x00\xfe\xff"
)
)
#()
#@#()
1
"\x02\x80\xfb\x00\; (set! f0 (cons argv nil))
#@"\x02\x80\xfb\x00\; (set! f0 (cons argv nil))
\x02\x80\x00\x80\; (set! f0 (cons nil f0))
\x02\x80\x02\x80"; (set! f0 (cons g2 f0))
"\x01\x80\x00\x00\xfe\xff"
#@"\x01\x80\x00\x00\xfe\xff"
)
; vim:set syntax= sw=2 expandtab:

View File

@ -1,14 +1,14 @@
#S(#="lambda"
#@#S(#="lambda"
; (define (cons x y)
; (builtin-cons x y))
#(#f)
#()
#@#(#f)
#@#()
2
"\x00\x80\x03\xfb\; (set! f0 (car argv))
#@"\x00\x80\x03\xfb\; (set! f0 (car argv))
\x00\x81\x04\xfb\; (set! f1 (cdr argv))
\x00\x81\x03\x81\; (set! f1 (car f1))
\x02\x80\x80\x81\; (set! f0 (cons f0 f1))
\x02\x80\x80\x00"; (set! f0 (cons f0 nil))
"\xff\x80\x00\x00\x01\x01"
#@"\xff\x80\x00\x00\x01\x01"
)
; vim:set syntax= sw=2 expandtab:

View File

@ -7,53 +7,53 @@
; (foldl fn (fn (car lst) init) (cdr lst))
; init))
#0=#S(#="lambda"
#@#0=#S(#="lambda"
; (define (foldl fn init lst)
; ((if (pair? lst)
; (lambda () (foldl fn (fn (car lst) init) (cdr lst))
; (lambda () init))))
#(
#S(#="template"
#@#(
#@#S(#="template"
; (lambda ()
; (let/cc k
; (call-with-multiple-values
; (lambda (new-init)
; (k (foldl fn new-init (cdr lst))))
; (lambda () (fn (car lst) init)))))
#(
#S(#="template"
#@#(
#@#S(#="template"
; (lambda (new-init)
; (k (foldl fn new-init (cdr lst))))
#(#=0)
"\x40\x41\x42\xfe\xff" ; i0 i1 i2 ctx k
#@#(#=0)
#@"\x40\x41\x42\xfe\xff" ; i0 i1 i2 ctx k
2
"\x00\x80\x04\x42\; (set! f0 (cdr i2))
#@"\x00\x80\x04\x42\; (set! f0 (cdr i2))
\x02\x80\x80\x00\; (set! f0 (cons f0 nil))
\x00\x81\x03\xfb\; (set! f1 (car argv))
\x02\x80\x81\x80\; (set! f0 (cons f1 f0))
\x02\x80\x40\x80"; (set! f0 (cons i0 f0))
"\x01\x80\x00\x00\x43\x44"
#@"\x01\x80\x00\x00\x43\x44"
)
)
"\x80\x81\x82" ; f0=fn f1=init f2=lst
#@"\x80\x81\x82" ; f0=fn f1=init f2=lst
2
"\x02\x80\x41\x00\; (set! f0 (cons i1 nil))
#@"\x02\x80\x41\x00\; (set! f0 (cons i1 nil))
\x00\x81\x03\x42\; (set! f1 (car i2))
\x02\x80\x81\x80"; (set! f0 (cons f1 f0))
"\x40\x80\x00\x00\xfe\x01"
#@"\x40\x80\x00\x00\xfe\x01"
)
#S(#="template"
#@#S(#="template"
; (lambda () init)
#(#f)
"\x81" ; f1
#@#(#f)
#@"\x81" ; f1
1
"\x02\x80\x40\x00"; (set! f0 (cons i0 nil))
"\xff\x80\x00\x00\x01\x01"
#@"\x02\x80\x40\x00"; (set! f0 (cons i0 nil))
#@"\xff\x80\x00\x00\x01\x01"
)
)
#()
#@#()
6
"\x00\x80\x03\xfb\; (set! f0 (car argv)) ; f0=fn
#@"\x00\x80\x03\xfb\; (set! f0 (car argv)) ; f0=fn
\x00\x82\x04\xfb\; (set! f2 (cdr argv))
\x00\x81\x03\x82\; (set! f1 (car f2)) ; f1=init
\x00\x82\x04\x82\; (set! f2 (cdr f2))
@ -64,6 +64,6 @@
\x40\x83\x00\x00\; (goto-end-if f3)
\x00\x84\x01\xff\; (set! f4 k)
\x02\x85\x81\x00"; (set! f5 (cons f1 nil))
"\x84\x85\x00\x00\xfe\xff"
#@"\x84\x85\x00\x00\xfe\xff"
)
; vim:set syntax= sw=2 expandtab:

View File

@ -8,46 +8,46 @@
; (foldr fn init (cdr lst)))
; init))
#0=#S(#="lambda"
#@#0=#S(#="lambda"
; (define (foldr fn init lst)
; ((if (pair? lst)
; (lambda () (fn (car lst)
; (foldr fn init (cdr lst))))
; (lambda () init))))
#(
#S(#="template"
#@#(
#@#S(#="template"
; (lambda ()
; (let/cc k
; (let ([lstcar (car lst)])
; (call-with-multiple-values
; (lambda (v) (k (fn lstcar v)))
; (lambda () (foldr fn init (cdr lst)))))))
#(
#S(#="template"
#@#(
#@#S(#="template"
; (lambda (v) (k (fn lstcar v)))
#()
"\x40\x81\xfe\xff" ; i0 f1 ctx k
#@#()
#@"\x40\x81\xfe\xff" ; i0 f1 ctx k
1
"\x00\x80\x03\xfb\; (set! f0 (car argv))
#@"\x00\x80\x03\xfb\; (set! f0 (car argv))
\x02\x80\x80\x00\; (set! f0 (cons f0 nil))
\x02\x80\x41\x80"; (set! f0 (cons i1 f0))
"\x40\x80\x00\x00\x42\x43"
#@"\x40\x80\x00\x00\x42\x43"
)
#=0 ; foldr
)
"\x80\x81\x82" ; f0=fn f1=init f2=lst
#@"\x80\x81\x82" ; f0=fn f1=init f2=lst
3
"\x00\x80\x04\x42\; (set! f0 (cdr i2))
#@"\x00\x80\x04\x42\; (set! f0 (cdr i2))
\x00\x81\x03\x42\; (set! f1 (car i2))
\x02\x82\x80\x00\; (set! f2 (cons f0 nil))
\x02\x82\x41\x82\; (set! f2 (cons i1 f2))
\x02\x82\x40\x82"; (set! f2 (cons i0 f2))
"\x02\x82\x00\x00\xfe\x01"
#@"\x02\x82\x00\x00\xfe\x01"
)
)
#()
#@#()
6
"\x00\x80\x03\xfb\; (set! f0 (car argv)) ; f0=fn
#@"\x00\x80\x03\xfb\; (set! f0 (car argv)) ; f0=fn
\x00\x82\x04\xfb\; (set! f2 (cdr argv))
\x00\x81\x03\x82\; (set! f1 (car f2)) ; f1=init
\x00\x82\x04\x82\; (set! f2 (cdr f2))
@ -58,6 +58,6 @@
\x40\x83\x00\x00\; (goto-end-if f3)
\x00\x84\x01\xff\; (set! f4 k)
\x02\x85\x81\x00"; (set! f5 (cons f1 nil))
"\x84\x85\x00\x00\xfe\xff"
#@"\x84\x85\x00\x00\xfe\xff"
)
; vim:set syntax= sw=2 expandtab:

View File

@ -1,16 +1,16 @@
;; Returns a copy of the argument list
; (define (list . lst)
; (foldr cons nil lst))
#S(#="lambda"
#(
#@#S(#="lambda"
#@#(
#i"foldr.rla"
#i"cons.rla"
)
#()
#@#()
1
"\x02\x80\xfb\x00\; (set! f0 (cons argv nil))
#@"\x02\x80\xfb\x00\; (set! f0 (cons argv nil))
\x02\x80\x00\x80\; (set! f0 (cons nil f0))
\x02\x80\x02\x80"; (set! f0 (cons g2 f0))
"\x01\x80\x00\x00\xfe\xff"
#@"\x01\x80\x00\x00\xfe\xff"
)
; vim:set syntax= sw=2 expandtab:

View File

@ -1,52 +1,52 @@
#S(#="lambda"
#@#S(#="lambda"
; (define (map fn lst)
; (reverse (foldl (lambda (x lst)
; (cons (fn x) lst))
; ()
; lst)))
#(
#@#(
#i"foldl.rla"
#S(#="template"
#@#S(#="template"
; (lambda (x rlst)
; (let/cc k
; (call-with-multiple-values
; (lambda (y) (k (cons y rlst)))
; (lambda () (fn x)))))
#(
#S(#="template"
#@#(
#@#S(#="template"
; (lambda (y)
; (k (cons y rlst)))
#(#f)
"\x81\xff" ; f1 k
#@#(#f)
#@"\x81\xff" ; f1 k
1
"\x00\x80\x03\xfb\; (set! f0 (car argv))
#@"\x00\x80\x03\xfb\; (set! f0 (car argv))
\x02\x80\x80\x40\; (set! f0 (cons f0 i0))
\x02\x80\x80\x00"; (set! f0 (cons f0 nil))
"\x41\x80\x00\x00\x01\x01"
#@"\x41\x80\x00\x00\x01\x01"
)
)
"\x80"
#@"\x80"
2
"\x00\x80\x03\xfb\; (set! f0 (car argv))
#@"\x00\x80\x03\xfb\; (set! f0 (car argv))
\x00\x81\x04\xfb\; (set! f1 (cdr argv))
\x00\x81\x03\x81\; (set! f1 (car f1))
\x00\x81\x1b\x01\; (set! f1 (lambda g1))
\x02\x80\x80\x00"; (set! f0 (cons f0 nil))
"\x40\x80\x00\x00\xfe\x81"
#@"\x40\x80\x00\x00\xfe\x81"
)
#S(#="template"
#@#S(#="template"
; (lambda (rlst)
; (k (reverse rlst)))
#(#i"reverse.rla")
"\xfe\xff" ; ctx k
#@#(#i"reverse.rla")
#@"\xfe\xff" ; ctx k
0
""
"\x01\xfb\x00\x00\x40\x41"
#@""
#@"\x01\xfb\x00\x00\x40\x41"
)
)
#()
#@#()
4
"\x00\x80\x03\xfb\; (set! f0 (car argv))
#@"\x00\x80\x03\xfb\; (set! f0 (car argv))
\x00\x81\x04\xfb\; (set! f1 (cdr argv))
\x00\x81\x03\x81\; (set! f1 (car f1))
\x02\x82\x81\x00\; (set! f2 (cons f1 nil))
@ -54,6 +54,6 @@
\x00\x83\x1b\x02\; (set! f3 (lambda g2))
\x02\x82\x83\x82\; (set! f2 (cons f3 f2))
\x00\x83\x1b\x03"; (set! f3 (lambda g3))
"\x01\x82\x00\x00\xfe\x83"
#@"\x01\x82\x00\x00\xfe\x83"
)
; vim:set syntax= sw=2 expandtab:

View File

@ -11,41 +11,41 @@
; #f
; fns))
#S(#="lambda"
#(
#@#S(#="lambda"
#@#(
#i"foldl.rla"
#S(#="template"
#@#S(#="template"
; (lambda (fn _)
; (let/cc k2
; ((lambda (x)
; ((if x k2 k) x))
; (fn))))
#(
#S(#="template"
#@#(
#@#S(#="template"
; (lambda (x)
; ((if x k2 k) x))
#(#f)
"\x40\xff" ; i0 k
#@#(#f)
#@"\x40\xff" ; i0 k
1
"\x00\x80\x03\xfb\; (set! f0 (car argv))
#@"\x00\x80\x03\xfb\; (set! f0 (car argv))
\x80\x80\x40\x41"; (set! f0 (if f0 i0 i1))
"\x80\xfb\x00\x00\x01\x01"
#@"\x80\xfb\x00\x00\x01\x01"
)
)
"\xff" ; k
#@"\xff" ; k
2
"\x00\x80\x03\xfb\; (set! f0 (car argv))
#@"\x00\x80\x03\xfb\; (set! f0 (car argv))
\x00\x81\x1b\x01"; (set! f1 (lambda g1))
"\x80\x00\x00\x00\xfe\x81"
#@"\x80\x00\x00\x00\xfe\x81"
)
#f
)
#()
#@#()
2
"\x02\x80\xfb\x00\; (set! f0 (cons argv nil))
#@"\x02\x80\xfb\x00\; (set! f0 (cons argv nil))
\x02\x80\x03\x80\; (set! f0 (cons g3 f0))
\x00\x81\x1b\x02\; (set! f1 (lambda g2))
\x02\x80\x81\x80"; (set! f0 (cons f1 f0))
"\x01\x80\x00\x00\xfe\xff"
#@"\x01\x80\x00\x00\xfe\xff"
)
; vim:set syntax= sw=2 expandtab:

View File

@ -1,17 +1,17 @@
;; Returns a reversed copy of the given list
; (define (reverse lst)
; (foldl cons nil lst))
#S(#="lambda"
#(
#@#S(#="lambda"
#@#(
#i"foldl.rla"
#i"cons.rla"
)
#()
#@#()
1
"\x00\x80\x03\xfb\; (set! f0 (car argv))
#@"\x00\x80\x03\xfb\; (set! f0 (car argv))
\x02\x80\x80\x00\; (set! f0 (cons f0 nil))
\x02\x80\x00\x80\; (set! f0 (cons nil f0))
\x02\x80\x02\x80"; (set! f0 (cons g2 f0))
"\x01\x80\x00\x00\xfe\xff"
#@"\x01\x80\x00\x00\xfe\xff"
)
; vim:set syntax= sw=2 expandtab: