mirror of
https://github.com/justinethier/cyclone.git
synced 2025-07-06 04:36:36 +02:00
WIP
This commit is contained in:
parent
1caa277f8a
commit
a988582228
3 changed files with 22 additions and 22 deletions
34
memo.scm
34
memo.scm
|
@ -26,30 +26,30 @@
|
|||
(write (mfnc 1 1)) (newline)
|
||||
|
||||
; Original versions:
|
||||
;(define (ack m n)
|
||||
; (cond ((= m 0) (+ n 1))
|
||||
; ((= n 0) (ack (- m 1) 1))
|
||||
; (else (ack (- m 1) (ack m (- n 1))))))
|
||||
;(define (fib n)
|
||||
; (if (< n 2)
|
||||
; n
|
||||
; (+ (fib (- n 1))
|
||||
; (fib (- n 2)))))
|
||||
|
||||
; Fast versions:
|
||||
(define ack (memoize _ack))
|
||||
(define (_ack m n)
|
||||
(define (ack m n)
|
||||
(cond ((= m 0) (+ n 1))
|
||||
((= n 0) (ack (- m 1) 1))
|
||||
(else (ack (- m 1) (ack m (- n 1))))))
|
||||
|
||||
(define fib (memoize _fib))
|
||||
(define (_fib n)
|
||||
(define (fib n)
|
||||
(if (< n 2)
|
||||
n
|
||||
(+ (fib (- n 1))
|
||||
(fib (- n 2)))))
|
||||
|
||||
;
|
||||
;; Fast versions:
|
||||
;(define ack (memoize _ack))
|
||||
;(define (_ack m n)
|
||||
; (cond ((= m 0) (+ n 1))
|
||||
; ((= n 0) (ack (- m 1) 1))
|
||||
; (else (ack (- m 1) (ack m (- n 1))))))
|
||||
;
|
||||
;(define fib (memoize _fib))
|
||||
;(define (_fib n)
|
||||
; (if (< n 2)
|
||||
; n
|
||||
; (+ (fib (- n 1))
|
||||
; (fib (- n 2)))))
|
||||
;
|
||||
;; New fast versions that do not introduce any new top-level definitions
|
||||
;(define ack
|
||||
; ((lambda ()
|
||||
|
|
|
@ -29,7 +29,7 @@
|
|||
(define cont #f)
|
||||
(define (scan exp return locals)
|
||||
;(trace:error `(DEBUG scan ,(ast:ast->pp-sexp exp)))
|
||||
(write `(DEBUG scan ,var ,cont ,(ast:ast->pp-sexp exp))) (newline)
|
||||
;(write `(DEBUG scan ,var ,cont ,(ast:ast->pp-sexp exp))) (newline)
|
||||
(cond
|
||||
;; TODO: reject if a lambda is returned
|
||||
((ast:lambda? exp)
|
||||
|
@ -133,8 +133,8 @@
|
|||
(cond
|
||||
((memoizable? var body)
|
||||
(let ((new-var (gensym var)))
|
||||
(write `(DEBUG ,var is memoizable))
|
||||
(newline)
|
||||
;(write `(DEBUG ,var is memoizable))
|
||||
;(newline)
|
||||
;; TODO: easy to rename function via gensym. however, also
|
||||
;; need to inject this into top-level:
|
||||
;; (define fib #f)
|
||||
|
|
|
@ -1708,12 +1708,12 @@
|
|||
(let ((new-ast (opt:inline-prims
|
||||
(opt:contract ast) -1)))
|
||||
;; Just a hack for now, need to fix beta expand in compiler benchmark
|
||||
(opt:memoize-pure-fncs
|
||||
(if (< (length (filter define? new-ast)) 1000)
|
||||
(opt:beta-expand new-ast) ;; TODO: temporarily disabled, causes problems with massive expansions
|
||||
;; in compiler benchmark, need to revist how to throttle/limit this
|
||||
;; (program size? heuristics? what else??)
|
||||
new-ast)
|
||||
TODO: integrate (define (opt:memoize-pure-fncs sexp)
|
||||
new-ast))
|
||||
)
|
||||
)
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue