*** empty log message ***
[bpt/guile.git] / module / language / r5rs / translate.scm
index 6e21ec1..5bf1875 100644 (file)
@@ -26,6 +26,9 @@
 
 (define (trans x) (if (pair? x) (trans-pair x) x))
 
+(define *primitive-procedure-list*
+  '(void car cdr cons + - * / < >))
+
 (define (trans-pair x)
   (let ((name (car x)) (args (cdr x)))
     (let ((il (case name
                ((lambda)
                 (cons* '@lambda (trans-formals (car args))
                        (map trans (cdr args))))
-               (else (cons (trans name) (map trans args)))))
+               (else
+                (if (memq name *primitive-procedure-list*)
+                    ;; FIXME: Temporary hack for direct optimization
+                    (cons (symbol-append '@ name) (map trans args))
+                    (cons (trans name) (map trans args))))))
          (props (source-properties x)))
       (if (not (null? props))
          (set-source-properties! il props))