make define-inline more usable from external modules
authorAndy Wingo <wingo@pobox.com>
Fri, 31 Oct 2008 12:26:48 +0000 (13:26 +0100)
committerAndy Wingo <wingo@pobox.com>
Fri, 31 Oct 2008 12:26:48 +0000 (13:26 +0100)
* module/system/il/inline.scm (define-inline): Use @ when accessing
  module vars so that other modules don't need to import all of our
  modules. However case-lambda is still needed.

module/system/il/inline.scm

index dd931f6..641a096 100644 (file)
      ((number? exp)
       `(make-ghil-quote #f #f ,exp))
      (else (error "bad consequent yall" exp))))
-  `(set! *inline-table*
-         (assq-set! *inline-table*
+  `(set! (@ (system il inline) *inline-table*)
+         (assq-set! (@ (system il inline) *inline-table*)
                     ,sym
-                    (case-lambda
-                     ,@(let lp ((in clauses) (out '()))
-                         (if (null? in)
-                             (reverse (cons '(else #f) out))
-                             (lp (cddr in)
-                                 (cons `(,(car in)
-                                         ,(consequent (cadr in))) out))))))))
+                    (let ((make-ghil-inline (@ (system il ghil) make-ghil-inline))
+                          (make-ghil-quote (@ (system il ghil) make-ghil-quote))
+                          (try-inline (@ (system il inline) try-inline)))
+                      (case-lambda
+                       ,@(let lp ((in clauses) (out '()))
+                           (if (null? in)
+                               (reverse (cons '(else #f) out))
+                               (lp (cddr in)
+                                   (cons `(,(car in)
+                                           ,(consequent (cadr in))) out)))))))))
 
 (define (try-inline head-value args)
   (and=> (assq-ref *inline-table* head-value)