mirror of
https://github.com/justinethier/cyclone.git
synced 2025-07-09 14:07:34 +02:00
Memoize all of the functions at top-level
This commit is contained in:
parent
4ac9b64bc2
commit
a843e06f9a
1 changed files with 17 additions and 4 deletions
|
@ -39,7 +39,7 @@
|
|||
((quote? exp) exp)
|
||||
((const? exp) #t)
|
||||
((ref? exp)
|
||||
TODO: if exp is a global, return false
|
||||
TODO: if exp is a global (IE: free var), return false
|
||||
exp)
|
||||
((define? exp)
|
||||
(return #f))
|
||||
|
@ -170,9 +170,22 @@
|
|||
(cond
|
||||
((define? exp) exp) ;; not top-level
|
||||
(else
|
||||
;; TODO: fold
|
||||
;;(foldl (lambda (exp acc) `(memo (lambda(,(car exp)) ,acc))) '(test) '((a . b) (c . d)))
|
||||
exp ;; TODO: just using this for debugging!
|
||||
;; Memoize all of the functions at top-level
|
||||
(foldl
|
||||
(lambda (var/new-var acc)
|
||||
(let ((rsym (gensym 'r))
|
||||
(var (car var/new-var))
|
||||
(new-var (cdr var/new-var)))
|
||||
`(memoize
|
||||
(,(gensym 'lambda)
|
||||
(,rsym)
|
||||
(Cyc-seq
|
||||
(set-global! ,var ,rsym)
|
||||
,acc
|
||||
))
|
||||
,new-var)))
|
||||
exp
|
||||
memo-tbl)
|
||||
)))
|
||||
new-exp)))
|
||||
(else new-exp)))
|
||||
|
|
Loading…
Add table
Reference in a new issue