From 20a73cac648eab930d470aed0aa47bacefaa9a79 Mon Sep 17 00:00:00 2001 From: Justin Ethier Date: Wed, 23 Nov 2016 17:48:21 -0500 Subject: [PATCH] Handle + and * without any args --- scheme/cyclone/transforms.sld | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/scheme/cyclone/transforms.sld b/scheme/cyclone/transforms.sld index 6530604d..af29e9e8 100644 --- a/scheme/cyclone/transforms.sld +++ b/scheme/cyclone/transforms.sld @@ -1062,10 +1062,16 @@ (cons (car ast) (map (lambda (a) (convert a renamed)) (cdr ast))))) - (if (precompute-prim-app? converted) - converted ; TODO:(eval converted) ;; OK, evaluate at compile time + (cond + ((and (equal? (car converted) '+) (= (length converted) 1)) + 0) + ((and (equal? (car converted) '*) (= (length converted) 1)) + 1) + ((precompute-prim-app? converted) + converted) ; TODO:(eval converted) ;; OK, evaluate at compile time ;converted))) ;; No, see if we can fast-convert it - (prim:inline-convert-prim-call converted)))) ;; No, see if we can fast-convert it + (else + (prim:inline-convert-prim-call converted))))) ;; No, see if we can fast-convert it ((lambda? ast) (let* ((args (lambda-formals->list ast)) (ltype (lambda-formals-type ast))