From 68e91f24089523639cbd520bee6e0c540d11852c Mon Sep 17 00:00:00 2001 From: Justin Ethier Date: Sun, 16 Dec 2018 19:03:15 -0500 Subject: [PATCH] WIP --- scheme/cyclone/cps-optimizations.sld | 4 +++- scheme/cyclone/transforms.sld | 15 +++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/scheme/cyclone/cps-optimizations.sld b/scheme/cyclone/cps-optimizations.sld index bc37d082..c13c8b51 100644 --- a/scheme/cyclone/cps-optimizations.sld +++ b/scheme/cyclone/cps-optimizations.sld @@ -929,7 +929,9 @@ (and arg ;; #f is a special value for init, so do not optimize it for now (or (const? arg) - (quote? arg)))) + (quote? arg) + (ref? arg) + ))) (cdr exp)) ) ;; Check for primitive calls that can be optimized out diff --git a/scheme/cyclone/transforms.sld b/scheme/cyclone/transforms.sld index 4868b644..59b81c91 100644 --- a/scheme/cyclone/transforms.sld +++ b/scheme/cyclone/transforms.sld @@ -223,6 +223,21 @@ set2 (insert (car set1) (union (cdr set1) set2)))) +;(define (union x y) +; (let ((result (my-union x y))) +; (trace:error `(union ,x ,y ,result ,(old-union x y))) +; result)) +; +;(define my-union +; (lambda (l1 l2) +; (if (null? l1) +; l2 ;; TODO: sort l2 (or figure out why we get passed an unsorted list +; (if (null? l2) +; l1 ;; TODO: sort l1 +; (if (symbol sorted-set[symbol] (define (difference set1 set2) ; NOTE: This can be similarly optimized.