mirror of
https://github.com/justinethier/cyclone.git
synced 2025-07-14 08:17:35 +02:00
WIP
This commit is contained in:
parent
29739bc731
commit
55b112afbd
2 changed files with 32 additions and 2 deletions
|
@ -950,9 +950,14 @@
|
|||
(let ((val (let ((local (assoc (car exp) local-env)))
|
||||
(if local
|
||||
(cdr local)
|
||||
(env:lookup (car exp) env #f)))))
|
||||
(let ((v (env:lookup (car exp) env #f)))
|
||||
v ;; TODO: below was for looking up a renamed macro. may want to consider using it
|
||||
;; in the symbol condition below...
|
||||
#;(if v
|
||||
v
|
||||
(env:lookup (car exp) rename-env #f)))))))
|
||||
;;(display "/* ")
|
||||
;;(write `(app DEBUG ,(car exp) ,val))
|
||||
;;(write `(app DEBUG ,(car exp) ,val ,local-env ,rename-env ,(env:lookup (car exp) env #f)))
|
||||
;;(display "*/ ")
|
||||
;;(newline)
|
||||
(cond
|
||||
|
@ -968,6 +973,21 @@
|
|||
env
|
||||
rename-env
|
||||
local-env))
|
||||
;; TODO: if we are doing this, only want to do so if the original variable is a macro.
|
||||
;; this is starting to get overly complicated though.
|
||||
;; if nothing else should encapsulate the above lookup into a function and call that
|
||||
;; in both places (above and here) to simplify things
|
||||
;;
|
||||
;; ((and (symbol? val)
|
||||
;; (not (eq? val (car exp))))
|
||||
;; ;; Original macro symbol was renamed. So try again with the orignal symbol
|
||||
;;(display "/* ")
|
||||
;;(write `(app DEBUG-syms ,(car exp) ,val ,local-env ,(cdr exp)))
|
||||
;;(display "*/ ")
|
||||
;;(newline)
|
||||
;; (_expand
|
||||
;; (cons val (cdr exp))
|
||||
;; env rename-env local-env))
|
||||
(else
|
||||
(map
|
||||
(lambda (expr) (_expand expr env rename-env local-env))
|
||||
|
|
|
@ -1,5 +1,15 @@
|
|||
(import (scheme base) (scheme write) (scheme cyclone pretty-print))
|
||||
|
||||
;; Just testing, may want to remove this one once the recursive macro expansion works
|
||||
(define-syntax my-or2 (syntax-rules ()
|
||||
((my-or2) #f)
|
||||
((my-or2 e) e)
|
||||
((my-or2 e1 e2 ...)
|
||||
(let ((temp e1)) (if temp temp (my-or2 e2 ...))))))
|
||||
(write (my-or2 #t))
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
|
||||
(let-syntax
|
||||
((my-or (syntax-rules ()
|
||||
((my-or) #f)
|
||||
|
|
Loading…
Add table
Reference in a new issue