mirror of
https://github.com/justinethier/cyclone.git
synced 2025-05-23 20:15:05 +02:00
Experimenting with receiving a compound-proc back from compiled code
This commit is contained in:
parent
917c6c00b3
commit
132f669659
2 changed files with 12 additions and 8 deletions
10
eval.scm
10
eval.scm
|
@ -358,11 +358,13 @@
|
|||
((begin? exp) (analyze-sequence (begin-actions exp)))
|
||||
((cond? exp) (analyze (cond->if exp)))
|
||||
;; END derived expression processing
|
||||
|
||||
;; experimenting with passing these back to eval
|
||||
((compound-procedure? exp)
|
||||
(lambda (env) exp)) ;; TODO: good enough? update env?
|
||||
;; END experimental code
|
||||
|
||||
((application? exp) (analyze-application exp))
|
||||
;; TODO: ;; JAE - testing with these next 3
|
||||
;; TODO: ((primitive-procedure? exp) exp)
|
||||
;; TODO: ((compound-procedure? exp) exp)
|
||||
;; TODO: ((procedure? exp) exp)
|
||||
(else
|
||||
(error "Unknown expression type -- ANALYZE" exp))))
|
||||
;(lambda () 'TODO-unknown-exp-type)))) ; JAE - this is a debug line
|
||||
|
|
10
test.scm
10
test.scm
|
@ -1,17 +1,19 @@
|
|||
;; Temporary testing, delete this once it works
|
||||
(define (mywrite x)
|
||||
(write x))
|
||||
(define (call2 fn x y)
|
||||
(write
|
||||
(fn x y)))
|
||||
|
||||
(define (call fn a)
|
||||
(fn a))
|
||||
|
||||
(call write 'hello)
|
||||
|
||||
call2 ;; TODO: or would be optimized out... need to fix that
|
||||
;; Demonstrate sending an interpreted function to compiled code
|
||||
;; I think in order for this to work, the compiled code would have to
|
||||
;; detect an interpreted proc, and use eval to execute it
|
||||
|
||||
;; TODO: to debug this, may try placing printfs in runtime's apply
|
||||
(eval '(call (lambda (x) x) (display (+ 1 1))))
|
||||
(eval '(call2 (lambda (x y) (+ y x)) 2 3))
|
||||
;(eval '(call (lambda (x) (+ 1 x)) (display (+ 1 1))))
|
||||
;(eval '(call write 1))
|
||||
;(eval '(call mywrite 1))
|
||||
|
|
Loading…
Add table
Reference in a new issue