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:
parent
03c3dec091
commit
cc16957256
|
|
@ -1,30 +1,30 @@
|
||||||
#S(#="lambda"
|
#@#S(#="lambda"
|
||||||
#(
|
#@#(
|
||||||
(
|
(
|
||||||
#0=#S(#="structure"
|
#@#0=#S(#="structure"
|
||||||
(#="structure")
|
(#="structure")
|
||||||
5
|
5
|
||||||
#f
|
#f
|
||||||
)
|
)
|
||||||
#1=#S(#=0
|
#@#1=#S(#=0
|
||||||
(#="structure")
|
(#="structure")
|
||||||
5
|
5
|
||||||
#f
|
#f
|
||||||
"annotated-structure"
|
#@"annotated-structure"
|
||||||
#(
|
#@#(
|
||||||
"supers"
|
#@"supers"
|
||||||
"nslots"
|
#@"nslots"
|
||||||
"callable"
|
#@"callable"
|
||||||
"name"
|
#@"name"
|
||||||
"slot-names"
|
#@"slot-names"
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
#2=#S(#=1
|
#@#2=#S(#=1
|
||||||
(#="lambda")
|
(#="lambda")
|
||||||
8
|
8
|
||||||
#f
|
#f
|
||||||
"annotated-lambda"
|
#@"annotated-lambda"
|
||||||
#(
|
#@#(
|
||||||
"global-vars"
|
"global-vars"
|
||||||
"instance-vars"
|
"instance-vars"
|
||||||
"frame-vars"
|
"frame-vars"
|
||||||
|
|
@ -36,17 +36,17 @@
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
#S(#=2
|
#@#S(#=2
|
||||||
#(("OK") #f)
|
#@#(("OK") #f)
|
||||||
#()
|
#@#()
|
||||||
0
|
0
|
||||||
""
|
#@""
|
||||||
"\xff\x01\x00\x00\x02\x02"
|
#@"\xff\x01\x00\x00\x02\x02"
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
#()
|
#@#()
|
||||||
0
|
0
|
||||||
""
|
#@""
|
||||||
"\x02\xfd\xfe\xff"
|
#@"\x02\xfd\xfe\xff"
|
||||||
)
|
)
|
||||||
; vim:set syntax= sw=3 expandtab:
|
; vim:set syntax= sw=3 expandtab:
|
||||||
|
|
|
||||||
|
|
@ -3,30 +3,30 @@
|
||||||
; (lambda (number-string)
|
; (lambda (number-string)
|
||||||
; (fact (string->number number-string)))
|
; (fact (string->number number-string)))
|
||||||
|
|
||||||
#S(#="lambda"
|
#@#S(#="lambda"
|
||||||
; (lambda (number-string)
|
; (lambda (number-string)
|
||||||
; (let/cc k
|
; (let/cc k
|
||||||
; (call-with-values
|
; (call-with-values
|
||||||
; (lambda () (string->number number-string))
|
; (lambda () (string->number number-string))
|
||||||
; (lambda (n) (k (fact n))))))
|
; (lambda (n) (k (fact n))))))
|
||||||
#(
|
#@#(
|
||||||
#="string->number"
|
#="string->number"
|
||||||
#S(#="template"
|
#@#S(#="template"
|
||||||
; (let/cc k
|
; (let/cc k
|
||||||
; (lambda (n)
|
; (lambda (n)
|
||||||
; (k (fact n))))
|
; (k (fact n))))
|
||||||
#(
|
#@#(
|
||||||
#i"../lib/math/fact.rla"
|
#i"../lib/math/fact.rla"
|
||||||
)
|
)
|
||||||
"\xfe\xff" ; ctx k
|
#@"\xfe\xff" ; ctx k
|
||||||
0
|
0
|
||||||
""
|
#@""
|
||||||
"\x01\xfb\x00\x00\x40\x41"
|
#@"\x01\xfb\x00\x00\x40\x41"
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
#()
|
#@#()
|
||||||
0
|
0
|
||||||
""
|
#@""
|
||||||
"\x01\xfb\x00\x00\xfe\x02"
|
#@"\x01\xfb\x00\x00\xfe\x02"
|
||||||
)
|
)
|
||||||
; vim:set syntax= sw=2 expandtab:
|
; vim:set syntax= sw=2 expandtab:
|
||||||
|
|
|
||||||
|
|
@ -1,23 +1,23 @@
|
||||||
#S(#="lambda"
|
#@#S(#="lambda"
|
||||||
; (define (test-and)
|
; (define (test-and)
|
||||||
; (and (lambda () 3)
|
; (and (lambda () 3)
|
||||||
; (lambda () #t)
|
; (lambda () #t)
|
||||||
; (lambda () 4)
|
; (lambda () 4)
|
||||||
; (lambda () #f)
|
; (lambda () #f)
|
||||||
; (lambda () 5)))
|
; (lambda () 5)))
|
||||||
#(
|
#@#(
|
||||||
#i"../lib/primitive/and.rla"
|
#i"../lib/primitive/and.rla"
|
||||||
(
|
(
|
||||||
#S(#="lambda" #(( 3) #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" #@#((#t) #f) #@#() 0 #@"" #@"\xff\x01\x00\x00\x02\x02")
|
||||||
#S(#="lambda" #(( 4) #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" #@#((#f) #f) #@#() 0 #@"" #@"\xff\x01\x00\x00\x02\x02")
|
||||||
#S(#="lambda" #(( 5) #f) #() 0 "" "\xff\x01\x00\x00\x02\x02")
|
#@#S(#="lambda" #@#(( 5) #f) #@#() 0 #@"" #@"\xff\x01\x00\x00\x02\x02")
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
#()
|
#@#()
|
||||||
0
|
0
|
||||||
""
|
#@""
|
||||||
"\x01\x02\x00\x00\xfe\xff"
|
#@"\x01\x02\x00\x00\xfe\xff"
|
||||||
)
|
)
|
||||||
; vim:set syntax= sw=2 expandtab:
|
; vim:set syntax= sw=2 expandtab:
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,13 @@
|
||||||
#S(#="lambda"
|
#@#S(#="lambda"
|
||||||
; (define (test-append)
|
; (define (test-append)
|
||||||
; (append '(1 2 3) (4 5) (6 7 8 9)))
|
; (append '(1 2 3) (4 5) (6 7 8 9)))
|
||||||
#(
|
#@#(
|
||||||
#i"../lib/primitive/append.rla"
|
#i"../lib/primitive/append.rla"
|
||||||
((1 2 3) (4 5) (6 7 8 9))
|
((1 2 3) (4 5) (6 7 8 9))
|
||||||
)
|
)
|
||||||
#()
|
#@#()
|
||||||
0
|
0
|
||||||
""
|
#@""
|
||||||
"\x01\x02\x00\x00\xfe\xff"
|
#@"\x01\x02\x00\x00\xfe\xff"
|
||||||
)
|
)
|
||||||
; vim:set syntax= sw=2 expandtab:
|
; vim:set syntax= sw=2 expandtab:
|
||||||
|
|
|
||||||
|
|
@ -1,29 +1,29 @@
|
||||||
#S(#="lambda"
|
#@#S(#="lambda"
|
||||||
; (define (test-foldl)
|
; (define (test-foldl)
|
||||||
; (foldl + 0 '(2 3 4 5)))
|
; (foldl + 0 '(2 3 4 5)))
|
||||||
#(
|
#@#(
|
||||||
#i"../lib/primitive/foldl.rla"
|
#i"../lib/primitive/foldl.rla"
|
||||||
(
|
(
|
||||||
#S(#="lambda"
|
#@#S(#="lambda"
|
||||||
; (define (+ x y)
|
; (define (+ x y)
|
||||||
; (fix+ x y))
|
; (fix+ x y))
|
||||||
#(#f)
|
#@#(#f)
|
||||||
#()
|
#@#()
|
||||||
2
|
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\x04\xfb\; (set! f1 (cdr argv))
|
||||||
\x00\x81\x03\x81\; (set! f1 (car f1))
|
\x00\x81\x03\x81\; (set! f1 (car f1))
|
||||||
\x08\x80\x80\x81\; (set! f0 (fix+ f0 f1))
|
\x08\x80\x80\x81\; (set! f0 (fix+ f0 f1))
|
||||||
\x02\x80\x80\x00"; (set! f0 (cons f0 nil))
|
\x02\x80\x80\x00"; (set! f0 (cons f0 nil))
|
||||||
"\xff\x80\x00\x00\x01\x01"
|
#@"\xff\x80\x00\x00\x01\x01"
|
||||||
)
|
)
|
||||||
0
|
0
|
||||||
(2 3 4 5)
|
(2 3 4 5)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
#()
|
#@#()
|
||||||
0
|
0
|
||||||
""
|
#@""
|
||||||
"\x01\x02\x00\x00\xfe\xff"
|
#@"\x01\x02\x00\x00\xfe\xff"
|
||||||
)
|
)
|
||||||
; vim:set syntax= sw=2 expandtab:
|
; vim:set syntax= sw=2 expandtab:
|
||||||
|
|
|
||||||
|
|
@ -1,29 +1,29 @@
|
||||||
#S(#="lambda"
|
#@#S(#="lambda"
|
||||||
; (define (test-foldr)
|
; (define (test-foldr)
|
||||||
; (foldr + 0 '(2 3 4 5)))
|
; (foldr + 0 '(2 3 4 5)))
|
||||||
#(
|
#@#(
|
||||||
#i"../lib/primitive/foldr.rla"
|
#i"../lib/primitive/foldr.rla"
|
||||||
(
|
(
|
||||||
#S(#="lambda"
|
#@#S(#="lambda"
|
||||||
; (define (+ x y)
|
; (define (+ x y)
|
||||||
; (fix+ x y))
|
; (fix+ x y))
|
||||||
#(#f)
|
#@#(#f)
|
||||||
#()
|
#@#()
|
||||||
2
|
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\x04\xfb\; (set! f1 (cdr argv))
|
||||||
\x00\x81\x03\x81\; (set! f1 (car f1))
|
\x00\x81\x03\x81\; (set! f1 (car f1))
|
||||||
\x08\x80\x80\x81\; (set! f0 (fix+ f0 f1))
|
\x08\x80\x80\x81\; (set! f0 (fix+ f0 f1))
|
||||||
\x02\x80\x80\x00"; (set! f0 (cons f0 nil))
|
\x02\x80\x80\x00"; (set! f0 (cons f0 nil))
|
||||||
"\xff\x80\x00\x00\x01\x01"
|
#@"\xff\x80\x00\x00\x01\x01"
|
||||||
)
|
)
|
||||||
0
|
0
|
||||||
(2 3 4 5)
|
(2 3 4 5)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
#()
|
#@#()
|
||||||
0
|
0
|
||||||
""
|
#@""
|
||||||
"\x01\x02\x00\x00\xfe\xff"
|
#@"\x01\x02\x00\x00\xfe\xff"
|
||||||
)
|
)
|
||||||
; vim:set syntax= sw=2 expandtab:
|
; vim:set syntax= sw=2 expandtab:
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,13 @@
|
||||||
#S(#="lambda"
|
#@#S(#="lambda"
|
||||||
; (define (test-list)
|
; (define (test-list)
|
||||||
; (list 2 3 4 5))
|
; (list 2 3 4 5))
|
||||||
#(
|
#@#(
|
||||||
#i"../lib/primitive/list.rla"
|
#i"../lib/primitive/list.rla"
|
||||||
(1 2 3 4 5)
|
(1 2 3 4 5)
|
||||||
)
|
)
|
||||||
#()
|
#@#()
|
||||||
0
|
0
|
||||||
""
|
#@""
|
||||||
"\x01\x02\x00\x00\xfe\xff"
|
#@"\x01\x02\x00\x00\xfe\xff"
|
||||||
)
|
)
|
||||||
; vim:set syntax= sw=2 expandtab:
|
; vim:set syntax= sw=2 expandtab:
|
||||||
|
|
|
||||||
|
|
@ -1,16 +1,16 @@
|
||||||
#S(#="lambda"
|
#@#S(#="lambda"
|
||||||
; (define (test-map)
|
; (define (test-map)
|
||||||
; (map list '(2 3 4 5)))
|
; (map list '(2 3 4 5)))
|
||||||
#(
|
#@#(
|
||||||
#i"../lib/primitive/map.rla"
|
#i"../lib/primitive/map.rla"
|
||||||
(
|
(
|
||||||
#i"../lib/primitive/list.rla"
|
#i"../lib/primitive/list.rla"
|
||||||
(2 3 4 5)
|
(2 3 4 5)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
#()
|
#@#()
|
||||||
0
|
0
|
||||||
""
|
#@""
|
||||||
"\x01\x02\x00\x00\xfe\xff"
|
#@"\x01\x02\x00\x00\xfe\xff"
|
||||||
)
|
)
|
||||||
; vim:set syntax= sw=2 expandtab:
|
; vim:set syntax= sw=2 expandtab:
|
||||||
|
|
|
||||||
|
|
@ -1,23 +1,23 @@
|
||||||
#S(#="lambda"
|
#@#S(#="lambda"
|
||||||
; (define (test-or)
|
; (define (test-or)
|
||||||
; (and (lambda () #f)
|
; (and (lambda () #f)
|
||||||
; (lambda () 3)
|
; (lambda () 3)
|
||||||
; (lambda () #f)
|
; (lambda () #f)
|
||||||
; (lambda () #t)
|
; (lambda () #t)
|
||||||
; (lambda () #f)))
|
; (lambda () #f)))
|
||||||
#(
|
#@#(
|
||||||
#i"../lib/primitive/or.rla"
|
#i"../lib/primitive/or.rla"
|
||||||
(
|
(
|
||||||
#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" #@#(( 3) #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" #((#t) #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")
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
#()
|
#@#()
|
||||||
0
|
0
|
||||||
""
|
#@""
|
||||||
"\x01\x02\x00\x00\xfe\xff"
|
#@"\x01\x02\x00\x00\xfe\xff"
|
||||||
)
|
)
|
||||||
; vim:set syntax= sw=2 expandtab:
|
; vim:set syntax= sw=2 expandtab:
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,13 @@
|
||||||
#S(#="lambda"
|
#@#S(#="lambda"
|
||||||
; (define (test-reverse)
|
; (define (test-reverse)
|
||||||
; (reverse '(2 3 4 5))
|
; (reverse '(2 3 4 5))
|
||||||
#(
|
#@#(
|
||||||
#i"../lib/primitive/reverse.rla"
|
#i"../lib/primitive/reverse.rla"
|
||||||
((2 3 4 5))
|
((2 3 4 5))
|
||||||
)
|
)
|
||||||
#()
|
#@#()
|
||||||
0
|
0
|
||||||
""
|
#@""
|
||||||
"\x01\x02\x00\x00\xfe\xff"
|
#@"\x01\x02\x00\x00\xfe\xff"
|
||||||
)
|
)
|
||||||
; vim:set syntax= sw=2 expandtab:
|
; vim:set syntax= sw=2 expandtab:
|
||||||
|
|
|
||||||
|
|
@ -4,57 +4,57 @@
|
||||||
; 1
|
; 1
|
||||||
; (* n (fact (- n 1)))))
|
; (* n (fact (- n 1)))))
|
||||||
|
|
||||||
#0=#S(#="lambda"
|
#@#0=#S(#="lambda"
|
||||||
; (define (fact n)
|
; (define (fact n)
|
||||||
; ((if (< n 1)
|
; ((if (< n 1)
|
||||||
; (lambda () 1)
|
; (lambda () 1)
|
||||||
; (lambda () ... n fact ...))))
|
; (lambda () ... n fact ...))))
|
||||||
#(
|
#@#(
|
||||||
1
|
1
|
||||||
#S(#="lambda"
|
#@#S(#="lambda"
|
||||||
; (lambda _ 1)
|
; (lambda _ 1)
|
||||||
#((1) #f)
|
#@#((1) #f)
|
||||||
#()
|
#@#()
|
||||||
0
|
0
|
||||||
""
|
#@""
|
||||||
"\xff\x01\x00\x00\x02\x02"
|
#@"\xff\x01\x00\x00\x02\x02"
|
||||||
)
|
)
|
||||||
#S(#="template"
|
#@#S(#="template"
|
||||||
; (let [n]
|
; (let [n]
|
||||||
; (lambda _
|
; (lambda _
|
||||||
; (let/cc k
|
; (let/cc k
|
||||||
; (call-with-values
|
; (call-with-values
|
||||||
; (lambda () (fact (- n 1)))
|
; (lambda () (fact (- n 1)))
|
||||||
; (lambda (m) (k (* n m)))))))
|
; (lambda (m) (k (* n m)))))))
|
||||||
#(
|
#@#(
|
||||||
1
|
1
|
||||||
#S(#="template"
|
#@#S(#="template"
|
||||||
; (let (n)
|
; (let (n)
|
||||||
; (let/cc k
|
; (let/cc k
|
||||||
; (lambda (m)
|
; (lambda (m)
|
||||||
; (k (* n m)))))
|
; (k (* n m)))))
|
||||||
#(#f)
|
#@#(#f)
|
||||||
"\x40\xff" ; i0 k
|
#@"\x40\xff" ; i0 k
|
||||||
1
|
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))
|
\x0a\x80\x40\x80\; (set! f0 (fix* i0 f0))
|
||||||
\x02\x80\x80\x00"; (set! f0 (cons f0 nil))
|
\x02\x80\x80\x00"; (set! f0 (cons f0 nil))
|
||||||
"\x41\x80\x00\x00\x01\x01"
|
#@"\x41\x80\x00\x00\x01\x01"
|
||||||
)
|
)
|
||||||
#=0 ; fact
|
#=0 ; fact
|
||||||
)
|
)
|
||||||
"\x80"
|
#@"\x80"
|
||||||
1
|
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))
|
\x02\x80\x80\x00"; (set! f0 (cons f0 nil))
|
||||||
"\x03\x80\x00\x00\xfe\x02"
|
#@"\x03\x80\x00\x00\xfe\x02"
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
#()
|
#@#()
|
||||||
2
|
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))
|
\x0d\x81\x80\x01\; (set! f1 (fix< f0 g1))
|
||||||
\x81\x81\x02\x03"; (set! f1 (if f1 g2 g3))
|
\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:
|
; vim:set syntax= sw=2 expandtab:
|
||||||
|
|
|
||||||
|
|
@ -1,17 +1,17 @@
|
||||||
#S(#="lambda"
|
#@#S(#="lambda"
|
||||||
; (define (acons a b lst)
|
; (define (acons a b lst)
|
||||||
; (cons a (cons b lst)))
|
; (cons a (cons b lst)))
|
||||||
#(#f)
|
#@#(#f)
|
||||||
#()
|
#@#()
|
||||||
3
|
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\x82\x04\xfb\; (set! f2 (cdr argv))
|
||||||
\x00\x81\x03\x82\; (set! f1 (car f2))
|
\x00\x81\x03\x82\; (set! f1 (car f2))
|
||||||
\x00\x82\x04\x82\; (set! f2 (cdr f2))
|
\x00\x82\x04\x82\; (set! f2 (cdr f2))
|
||||||
\x00\x82\x03\x82\; (set! f2 (car f2))
|
\x00\x82\x03\x82\; (set! f2 (car f2))
|
||||||
\x02\x81\x81\x82\; (set! f1 (cons f1 f2))
|
\x02\x81\x81\x82\; (set! f1 (cons f1 f2))
|
||||||
\x02\x80\x80\x81\; (set! f0 (cons f0 f1))
|
\x02\x80\x80\x81\; (set! f0 (cons f0 f1))
|
||||||
\x02\x80\x80\x00"; (set! f0 (cons f0 nil))
|
\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:
|
; vim:set syntax= sw=2 expandtab:
|
||||||
|
|
|
||||||
|
|
@ -11,40 +11,40 @@
|
||||||
; #t
|
; #t
|
||||||
; fns))
|
; fns))
|
||||||
|
|
||||||
#S(#="lambda"
|
#@#S(#="lambda"
|
||||||
#(
|
#@#(
|
||||||
#i"foldl.rla"
|
#i"foldl.rla"
|
||||||
#S(#="template"
|
#@#S(#="template"
|
||||||
; (lambda (fn _)
|
; (lambda (fn _)
|
||||||
; (let/cc k2
|
; (let/cc k2
|
||||||
; ((lambda (x)
|
; ((lambda (x)
|
||||||
; ((if x k2 k) x))
|
; ((if x k2 k) x))
|
||||||
; (fn))))
|
; (fn))))
|
||||||
#(
|
#@#(
|
||||||
#S(#="template"
|
#@#S(#="template"
|
||||||
; (lambda (x)
|
; (lambda (x)
|
||||||
; ((if x k2 k) x))
|
; ((if x k2 k) x))
|
||||||
#(#f)
|
#@#(#f)
|
||||||
"\x40\xff" ; i0 k
|
#@"\x40\xff" ; i0 k
|
||||||
1
|
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\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
|
1
|
||||||
"\x00\x80\x03\xfb"; (set! f0 (car argv))
|
#@"\x00\x80\x03\xfb"; (set! f0 (car argv))
|
||||||
"\x80\x00\x00\x00\xfe\x01"
|
#@"\x80\x00\x00\x00\xfe\x01"
|
||||||
)
|
)
|
||||||
#t
|
#t
|
||||||
)
|
)
|
||||||
#()
|
#@#()
|
||||||
2
|
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))
|
\x02\x80\x03\x80\; (set! f0 (cons g3 f0))
|
||||||
\x00\x81\x1b\x02\; (set! f1 (lambda g2))
|
\x00\x81\x1b\x02\; (set! f1 (lambda g2))
|
||||||
\x02\x80\x81\x80"; (set! f0 (cons f1 f0))
|
\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:
|
; vim:set syntax= sw=2 expandtab:
|
||||||
|
|
|
||||||
|
|
@ -6,30 +6,30 @@
|
||||||
; nil
|
; nil
|
||||||
; lsts))
|
; lsts))
|
||||||
|
|
||||||
#S(#="lambda"
|
#@#S(#="lambda"
|
||||||
#(
|
#@#(
|
||||||
#i"foldr.rla"
|
#i"foldr.rla"
|
||||||
#S(#="lambda"
|
#@#S(#="lambda"
|
||||||
#(
|
#@#(
|
||||||
#i"foldr.rla"
|
#i"foldr.rla"
|
||||||
#i"cons.rla"
|
#i"cons.rla"
|
||||||
)
|
)
|
||||||
#()
|
#@#()
|
||||||
2
|
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))
|
\x02\x81\x80\x00\; (set! f1 (cons f0 nil))
|
||||||
\x00\x80\x04\xfb\; (set! f0 (cdr argv))
|
\x00\x80\x04\xfb\; (set! f0 (cdr argv))
|
||||||
\x00\x80\x03\x80\; (set! f0 (car f0))
|
\x00\x80\x03\x80\; (set! f0 (car f0))
|
||||||
\x02\x81\x80\x81\; (set! f1 (cons f0 f1))
|
\x02\x81\x80\x81\; (set! f1 (cons f0 f1))
|
||||||
\x02\x81\x02\x81"; (set! f1 (cons g2 f1))
|
\x02\x81\x02\x81"; (set! f1 (cons g2 f1))
|
||||||
"\x01\x81\x00\x00\xfe\xff"
|
#@"\x01\x81\x00\x00\xfe\xff"
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
#()
|
#@#()
|
||||||
1
|
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\x00\x80\; (set! f0 (cons nil f0))
|
||||||
\x02\x80\x02\x80"; (set! f0 (cons g2 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:
|
; vim:set syntax= sw=2 expandtab:
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,14 @@
|
||||||
#S(#="lambda"
|
#@#S(#="lambda"
|
||||||
; (define (cons x y)
|
; (define (cons x y)
|
||||||
; (builtin-cons x y))
|
; (builtin-cons x y))
|
||||||
#(#f)
|
#@#(#f)
|
||||||
#()
|
#@#()
|
||||||
2
|
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\x04\xfb\; (set! f1 (cdr argv))
|
||||||
\x00\x81\x03\x81\; (set! f1 (car f1))
|
\x00\x81\x03\x81\; (set! f1 (car f1))
|
||||||
\x02\x80\x80\x81\; (set! f0 (cons f0 f1))
|
\x02\x80\x80\x81\; (set! f0 (cons f0 f1))
|
||||||
\x02\x80\x80\x00"; (set! f0 (cons f0 nil))
|
\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:
|
; vim:set syntax= sw=2 expandtab:
|
||||||
|
|
|
||||||
|
|
@ -7,63 +7,63 @@
|
||||||
; (foldl fn (fn (car lst) init) (cdr lst))
|
; (foldl fn (fn (car lst) init) (cdr lst))
|
||||||
; init))
|
; init))
|
||||||
|
|
||||||
#0=#S(#="lambda"
|
#@#0=#S(#="lambda"
|
||||||
; (define (foldl fn init lst)
|
; (define (foldl fn init lst)
|
||||||
; ((if (pair? lst)
|
; ((if (pair? lst)
|
||||||
; (lambda () (foldl fn (fn (car lst) init) (cdr lst))
|
; (lambda () (foldl fn (fn (car lst) init) (cdr lst))
|
||||||
; (lambda () init))))
|
; (lambda () init))))
|
||||||
#(
|
#@#(
|
||||||
#S(#="template"
|
#@#S(#="template"
|
||||||
; (lambda ()
|
; (lambda ()
|
||||||
; (let/cc k
|
; (let/cc k
|
||||||
; (call-with-multiple-values
|
; (call-with-multiple-values
|
||||||
; (lambda (new-init)
|
; (lambda (new-init)
|
||||||
; (k (foldl fn new-init (cdr lst))))
|
; (k (foldl fn new-init (cdr lst))))
|
||||||
; (lambda () (fn (car lst) init)))))
|
; (lambda () (fn (car lst) init)))))
|
||||||
#(
|
#@#(
|
||||||
#S(#="template"
|
#@#S(#="template"
|
||||||
; (lambda (new-init)
|
; (lambda (new-init)
|
||||||
; (k (foldl fn new-init (cdr lst))))
|
; (k (foldl fn new-init (cdr lst))))
|
||||||
#(#=0)
|
#@#(#=0)
|
||||||
"\x40\x41\x42\xfe\xff" ; i0 i1 i2 ctx k
|
#@"\x40\x41\x42\xfe\xff" ; i0 i1 i2 ctx k
|
||||||
2
|
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))
|
\x02\x80\x80\x00\; (set! f0 (cons f0 nil))
|
||||||
\x00\x81\x03\xfb\; (set! f1 (car argv))
|
\x00\x81\x03\xfb\; (set! f1 (car argv))
|
||||||
\x02\x80\x81\x80\; (set! f0 (cons f1 f0))
|
\x02\x80\x81\x80\; (set! f0 (cons f1 f0))
|
||||||
\x02\x80\x40\x80"; (set! f0 (cons i0 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
|
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))
|
\x00\x81\x03\x42\; (set! f1 (car i2))
|
||||||
\x02\x80\x81\x80"; (set! f0 (cons f1 f0))
|
\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)
|
; (lambda () init)
|
||||||
#(#f)
|
#@#(#f)
|
||||||
"\x81" ; f1
|
#@"\x81" ; f1
|
||||||
1
|
1
|
||||||
"\x02\x80\x40\x00"; (set! f0 (cons i0 nil))
|
#@"\x02\x80\x40\x00"; (set! f0 (cons i0 nil))
|
||||||
"\xff\x80\x00\x00\x01\x01"
|
#@"\xff\x80\x00\x00\x01\x01"
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
#()
|
#@#()
|
||||||
6
|
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\x82\x04\xfb\; (set! f2 (cdr argv))
|
||||||
\x00\x81\x03\x82\; (set! f1 (car f2)) ; f1=init
|
\x00\x81\x03\x82\; (set! f1 (car f2)) ; f1=init
|
||||||
\x00\x82\x04\x82\; (set! f2 (cdr f2))
|
\x00\x82\x04\x82\; (set! f2 (cdr f2))
|
||||||
\x00\x82\x03\x82\; (set! f2 (car f2)) ; f2=lst
|
\x00\x82\x03\x82\; (set! f2 (car f2)) ; f2=lst
|
||||||
\x00\x84\x01\x01\; (set! f4 g1)
|
\x00\x84\x01\x01\; (set! f4 g1)
|
||||||
\x00\x85\x01\x00\; (set! f5 nil)
|
\x00\x85\x01\x00\; (set! f5 nil)
|
||||||
\x00\x83\x0b\x82\; (set! f3 (pair? f2))
|
\x00\x83\x0b\x82\; (set! f3 (pair? f2))
|
||||||
\x40\x83\x00\x00\; (goto-end-if f3)
|
\x40\x83\x00\x00\; (goto-end-if f3)
|
||||||
\x00\x84\x01\xff\; (set! f4 k)
|
\x00\x84\x01\xff\; (set! f4 k)
|
||||||
\x02\x85\x81\x00"; (set! f5 (cons f1 nil))
|
\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:
|
; vim:set syntax= sw=2 expandtab:
|
||||||
|
|
|
||||||
|
|
@ -8,56 +8,56 @@
|
||||||
; (foldr fn init (cdr lst)))
|
; (foldr fn init (cdr lst)))
|
||||||
; init))
|
; init))
|
||||||
|
|
||||||
#0=#S(#="lambda"
|
#@#0=#S(#="lambda"
|
||||||
; (define (foldr fn init lst)
|
; (define (foldr fn init lst)
|
||||||
; ((if (pair? lst)
|
; ((if (pair? lst)
|
||||||
; (lambda () (fn (car lst)
|
; (lambda () (fn (car lst)
|
||||||
; (foldr fn init (cdr lst))))
|
; (foldr fn init (cdr lst))))
|
||||||
; (lambda () init))))
|
; (lambda () init))))
|
||||||
#(
|
#@#(
|
||||||
#S(#="template"
|
#@#S(#="template"
|
||||||
; (lambda ()
|
; (lambda ()
|
||||||
; (let/cc k
|
; (let/cc k
|
||||||
; (let ([lstcar (car lst)])
|
; (let ([lstcar (car lst)])
|
||||||
; (call-with-multiple-values
|
; (call-with-multiple-values
|
||||||
; (lambda (v) (k (fn lstcar v)))
|
; (lambda (v) (k (fn lstcar v)))
|
||||||
; (lambda () (foldr fn init (cdr lst)))))))
|
; (lambda () (foldr fn init (cdr lst)))))))
|
||||||
#(
|
#@#(
|
||||||
#S(#="template"
|
#@#S(#="template"
|
||||||
; (lambda (v) (k (fn lstcar v)))
|
; (lambda (v) (k (fn lstcar v)))
|
||||||
#()
|
#@#()
|
||||||
"\x40\x81\xfe\xff" ; i0 f1 ctx k
|
#@"\x40\x81\xfe\xff" ; i0 f1 ctx k
|
||||||
1
|
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\x80\x00\; (set! f0 (cons f0 nil))
|
||||||
\x02\x80\x41\x80"; (set! f0 (cons i1 f0))
|
\x02\x80\x41\x80"; (set! f0 (cons i1 f0))
|
||||||
"\x40\x80\x00\x00\x42\x43"
|
#@"\x40\x80\x00\x00\x42\x43"
|
||||||
)
|
)
|
||||||
#=0 ; foldr
|
#=0 ; foldr
|
||||||
)
|
)
|
||||||
"\x80\x81\x82" ; f0=fn f1=init f2=lst
|
#@"\x80\x81\x82" ; f0=fn f1=init f2=lst
|
||||||
3
|
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))
|
\x00\x81\x03\x42\; (set! f1 (car i2))
|
||||||
\x02\x82\x80\x00\; (set! f2 (cons f0 nil))
|
\x02\x82\x80\x00\; (set! f2 (cons f0 nil))
|
||||||
\x02\x82\x41\x82\; (set! f2 (cons i1 f2))
|
\x02\x82\x41\x82\; (set! f2 (cons i1 f2))
|
||||||
\x02\x82\x40\x82"; (set! f2 (cons i0 f2))
|
\x02\x82\x40\x82"; (set! f2 (cons i0 f2))
|
||||||
"\x02\x82\x00\x00\xfe\x01"
|
#@"\x02\x82\x00\x00\xfe\x01"
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
#()
|
#@#()
|
||||||
6
|
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\x82\x04\xfb\; (set! f2 (cdr argv))
|
||||||
\x00\x81\x03\x82\; (set! f1 (car f2)) ; f1=init
|
\x00\x81\x03\x82\; (set! f1 (car f2)) ; f1=init
|
||||||
\x00\x82\x04\x82\; (set! f2 (cdr f2))
|
\x00\x82\x04\x82\; (set! f2 (cdr f2))
|
||||||
\x00\x82\x03\x82\; (set! f2 (car f2)) ; f2=lst
|
\x00\x82\x03\x82\; (set! f2 (car f2)) ; f2=lst
|
||||||
\x00\x84\x01\x01\; (set! f4 g1)
|
\x00\x84\x01\x01\; (set! f4 g1)
|
||||||
\x00\x85\x01\x00\; (set! f5 nil)
|
\x00\x85\x01\x00\; (set! f5 nil)
|
||||||
\x00\x83\x0b\x82\; (set! f3 (pair? f2))
|
\x00\x83\x0b\x82\; (set! f3 (pair? f2))
|
||||||
\x40\x83\x00\x00\; (goto-end-if f3)
|
\x40\x83\x00\x00\; (goto-end-if f3)
|
||||||
\x00\x84\x01\xff\; (set! f4 k)
|
\x00\x84\x01\xff\; (set! f4 k)
|
||||||
\x02\x85\x81\x00"; (set! f5 (cons f1 nil))
|
\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:
|
; vim:set syntax= sw=2 expandtab:
|
||||||
|
|
|
||||||
|
|
@ -1,16 +1,16 @@
|
||||||
;; Returns a copy of the argument list
|
;; Returns a copy of the argument list
|
||||||
; (define (list . lst)
|
; (define (list . lst)
|
||||||
; (foldr cons nil lst))
|
; (foldr cons nil lst))
|
||||||
#S(#="lambda"
|
#@#S(#="lambda"
|
||||||
#(
|
#@#(
|
||||||
#i"foldr.rla"
|
#i"foldr.rla"
|
||||||
#i"cons.rla"
|
#i"cons.rla"
|
||||||
)
|
)
|
||||||
#()
|
#@#()
|
||||||
1
|
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\x00\x80\; (set! f0 (cons nil f0))
|
||||||
\x02\x80\x02\x80"; (set! f0 (cons g2 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:
|
; vim:set syntax= sw=2 expandtab:
|
||||||
|
|
|
||||||
|
|
@ -1,59 +1,59 @@
|
||||||
#S(#="lambda"
|
#@#S(#="lambda"
|
||||||
; (define (map fn lst)
|
; (define (map fn lst)
|
||||||
; (reverse (foldl (lambda (x lst)
|
; (reverse (foldl (lambda (x lst)
|
||||||
; (cons (fn x) lst))
|
; (cons (fn x) lst))
|
||||||
; ()
|
; ()
|
||||||
; lst)))
|
; lst)))
|
||||||
#(
|
#@#(
|
||||||
#i"foldl.rla"
|
#i"foldl.rla"
|
||||||
#S(#="template"
|
#@#S(#="template"
|
||||||
; (lambda (x rlst)
|
; (lambda (x rlst)
|
||||||
; (let/cc k
|
; (let/cc k
|
||||||
; (call-with-multiple-values
|
; (call-with-multiple-values
|
||||||
; (lambda (y) (k (cons y rlst)))
|
; (lambda (y) (k (cons y rlst)))
|
||||||
; (lambda () (fn x)))))
|
; (lambda () (fn x)))))
|
||||||
#(
|
#@#(
|
||||||
#S(#="template"
|
#@#S(#="template"
|
||||||
; (lambda (y)
|
; (lambda (y)
|
||||||
; (k (cons y rlst)))
|
; (k (cons y rlst)))
|
||||||
#(#f)
|
#@#(#f)
|
||||||
"\x81\xff" ; f1 k
|
#@"\x81\xff" ; f1 k
|
||||||
1
|
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\x40\; (set! f0 (cons f0 i0))
|
||||||
\x02\x80\x80\x00"; (set! f0 (cons f0 nil))
|
\x02\x80\x80\x00"; (set! f0 (cons f0 nil))
|
||||||
"\x41\x80\x00\x00\x01\x01"
|
#@"\x41\x80\x00\x00\x01\x01"
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
"\x80"
|
#@"\x80"
|
||||||
2
|
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\x04\xfb\; (set! f1 (cdr argv))
|
||||||
\x00\x81\x03\x81\; (set! f1 (car f1))
|
\x00\x81\x03\x81\; (set! f1 (car f1))
|
||||||
\x00\x81\x1b\x01\; (set! f1 (lambda g1))
|
\x00\x81\x1b\x01\; (set! f1 (lambda g1))
|
||||||
\x02\x80\x80\x00"; (set! f0 (cons f0 nil))
|
\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)
|
; (lambda (rlst)
|
||||||
; (k (reverse rlst)))
|
; (k (reverse rlst)))
|
||||||
#(#i"reverse.rla")
|
#@#(#i"reverse.rla")
|
||||||
"\xfe\xff" ; ctx k
|
#@"\xfe\xff" ; ctx k
|
||||||
0
|
0
|
||||||
""
|
#@""
|
||||||
"\x01\xfb\x00\x00\x40\x41"
|
#@"\x01\xfb\x00\x00\x40\x41"
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
#()
|
#@#()
|
||||||
4
|
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\x04\xfb\; (set! f1 (cdr argv))
|
||||||
\x00\x81\x03\x81\; (set! f1 (car f1))
|
\x00\x81\x03\x81\; (set! f1 (car f1))
|
||||||
\x02\x82\x81\x00\; (set! f2 (cons f1 nil))
|
\x02\x82\x81\x00\; (set! f2 (cons f1 nil))
|
||||||
\x02\x82\x00\x82\; (set! f2 (cons nil f2))
|
\x02\x82\x00\x82\; (set! f2 (cons nil f2))
|
||||||
\x00\x83\x1b\x02\; (set! f3 (lambda g2))
|
\x00\x83\x1b\x02\; (set! f3 (lambda g2))
|
||||||
\x02\x82\x83\x82\; (set! f2 (cons f3 f2))
|
\x02\x82\x83\x82\; (set! f2 (cons f3 f2))
|
||||||
\x00\x83\x1b\x03"; (set! f3 (lambda g3))
|
\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:
|
; vim:set syntax= sw=2 expandtab:
|
||||||
|
|
|
||||||
|
|
@ -11,41 +11,41 @@
|
||||||
; #f
|
; #f
|
||||||
; fns))
|
; fns))
|
||||||
|
|
||||||
#S(#="lambda"
|
#@#S(#="lambda"
|
||||||
#(
|
#@#(
|
||||||
#i"foldl.rla"
|
#i"foldl.rla"
|
||||||
#S(#="template"
|
#@#S(#="template"
|
||||||
; (lambda (fn _)
|
; (lambda (fn _)
|
||||||
; (let/cc k2
|
; (let/cc k2
|
||||||
; ((lambda (x)
|
; ((lambda (x)
|
||||||
; ((if x k2 k) x))
|
; ((if x k2 k) x))
|
||||||
; (fn))))
|
; (fn))))
|
||||||
#(
|
#@#(
|
||||||
#S(#="template"
|
#@#S(#="template"
|
||||||
; (lambda (x)
|
; (lambda (x)
|
||||||
; ((if x k2 k) x))
|
; ((if x k2 k) x))
|
||||||
#(#f)
|
#@#(#f)
|
||||||
"\x40\xff" ; i0 k
|
#@"\x40\xff" ; i0 k
|
||||||
1
|
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\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
|
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))
|
\x00\x81\x1b\x01"; (set! f1 (lambda g1))
|
||||||
"\x80\x00\x00\x00\xfe\x81"
|
#@"\x80\x00\x00\x00\xfe\x81"
|
||||||
)
|
)
|
||||||
#f
|
#f
|
||||||
)
|
)
|
||||||
#()
|
#@#()
|
||||||
2
|
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))
|
\x02\x80\x03\x80\; (set! f0 (cons g3 f0))
|
||||||
\x00\x81\x1b\x02\; (set! f1 (lambda g2))
|
\x00\x81\x1b\x02\; (set! f1 (lambda g2))
|
||||||
\x02\x80\x81\x80"; (set! f0 (cons f1 f0))
|
\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:
|
; vim:set syntax= sw=2 expandtab:
|
||||||
|
|
|
||||||
|
|
@ -1,17 +1,17 @@
|
||||||
;; Returns a reversed copy of the given list
|
;; Returns a reversed copy of the given list
|
||||||
; (define (reverse lst)
|
; (define (reverse lst)
|
||||||
; (foldl cons nil lst))
|
; (foldl cons nil lst))
|
||||||
#S(#="lambda"
|
#@#S(#="lambda"
|
||||||
#(
|
#@#(
|
||||||
#i"foldl.rla"
|
#i"foldl.rla"
|
||||||
#i"cons.rla"
|
#i"cons.rla"
|
||||||
)
|
)
|
||||||
#()
|
#@#()
|
||||||
1
|
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\x80\x00\; (set! f0 (cons f0 nil))
|
||||||
\x02\x80\x00\x80\; (set! f0 (cons nil f0))
|
\x02\x80\x00\x80\; (set! f0 (cons nil f0))
|
||||||
\x02\x80\x02\x80"; (set! f0 (cons g2 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:
|
; vim:set syntax= sw=2 expandtab:
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue