Transitivity of "require" for macros
Hi, I suspect a bug in snow (maybe I am wrong) but let's say I have 3 snowballs (dummies for my explanation): ===== moda.scm ====== (package* moda/v1.0.0 (provide: (define (square x)) (define-macro (add x y) `(+ ,x ,y)))) (define (square x) (* x x)) ===== modb.scm ====== (package* modb/v1.0.0 (provide: (define (power4 x))) (require: moda/v1)) (define (power4 x) (* (square x) (square x))) (write (add 1 2)) (newline) ===== modc.scm ====== (package* modc/v1.0.0 (provide: (define (power6 x))) (require: modb/v1)) (define (power6 x) (* (square x) (square x) (square x))) (write (power6 12)) (newline) (write (add 1 2)) (newline) ========================================== Then I type: snow -- modb/v1.0.0/snow/modb.scm 3 which is what I expected. And then I type: snow -- modc/v1.0.0/snow/modc.scm 3 2985984 *** ERROR IN "modc/v1.0.0/snow/modc.scm"@10.9 -- Unbound variable: moda/v1#add which is NOT what I expected. It seems that macros are not transitively transported through dependencies. Normal functions are. Is this a bug? Thank you, Francois Magnan
Afficher les réponses par date
Hi, I suspect a bug in snow (maybe I am wrong) but let's say I have 3 snowballs (dummies for my explanation): ===== moda.scm ====== (package* moda/v1.0.0 (provide: (define (square x)) (define-macro (add x y) `(+ ,x ,y)))) (define (square x) (* x x)) ===== modb.scm ====== (package* modb/v1.0.0 (provide: (define (power4 x))) (require: moda/v1)) (define (power4 x) (* (square x) (square x))) (write (add 1 2)) (newline) ===== modc.scm ====== (package* modc/v1.0.0 (provide: (define (power6 x))) (require: modb/v1)) (define (power6 x) (* (square x) (square x) (square x))) (write (power6 12)) (newline) (write (add 1 2)) (newline) ========================================== Then I type: snow -- modb/v1.0.0/snow/modb.scm 3 which is what I expected. And then I type: snow -- modc/v1.0.0/snow/modc.scm 3 2985984 *** ERROR IN "modc/v1.0.0/snow/modc.scm"@10.9 -- Unbound variable: moda/v1#add which is NOT what I expected. It seems that macros are not transitively transported through dependencies. Normal functions are. Is this a bug? In other words... Is transitivity for the "require:" property part of the snow specification? Thank you, Francois Magnan
participants (1)
-
François Magnan