[racket] Conditional compilation ?

From: Veer Singh (veer.chah at gmail.com)
Date: Thu Jan 19 01:36:11 EST 2012

Ignore the above post , I figured this out after reading little bit more ,
just need to properly structure the code , sorry for the noise :)

Thanks.



On Wed, Jan 18, 2012 at 1:20 PM, Veer Singh <veer.chah at gmail.com> wrote:

> Hello ,
>
> How do I during compilation stop propagation of shared state in a some
> module and allow propagation of shared state in other modules.
>
> Consider the following normal and compiled modules given below where
> applying (add) produces list of symbols.
>
> Now in module m2 if there is some form like (require-special
> "m1.rkt") then only (add) should produce '(m n a b x y)
> Otherwise for normal require  it should produce '(m n) which mean
> (begin-for-syntax ...) in m1 is not touched or executed in different phase
> when compiling m2.
>
> I can do other way around though i.e require-special expands to
> (for-syntax "m1.rkt") which shifts the begin-for-syntax to phase 2 in m1
> and avoids the sharing.
> But then I am unable to import "add" from m1 without using normal require.
>
>
>
>
> (normal-module m1 racket
>   (require "defs.rkt") ; macro definitions for define-something and others
> and manipulate shared state
>
>   (provide add)
>
>   (define-something (add x y)
>     ...)
>
>   (define-something (add a b)
>     ...)
>
>   (generate-defn) ;  macro that generate (define (add) '(a b x y))
>
>   (add) ; should produce (list 'a 'b 'x 'y)
>
> )
>
>
>
> (compiled-module m1 racket
>   (require "defs.rkt")
>   (provide add)
>   (begin-for-syntax
>     (add-to-hash! 'add '(x y))
>     (add-to-hash! 'add '(a b)))
>
>
>   (define (add) '(a b x y)) ;result of (generate-defs)
>   (add) ; produces (list 'a 'b 'x 'y)
>   ...
> )
>
>
> (normal-module m2 racket
>   (require "defs.rkt")
>   (require (prefix-in m1: "m1.rkt"))
>
>   ;;(require (for-syntax "m1.rkt") ;
>
>   (define-something (add m n) ...)
>   (generate-defs)
>   (add)
>   (m1:add)
>   ...
> )
>
> (compiled-module m2 racket
>   (require "defs.rkt")
>   (require "m1.rkt")
>   (begin-for-syntax
>     (add-to-hash! 'add '(m n)))
>
>   (define (add) '(m n a b x y)) ;result of (generate-defs)
>
>   (add) ;produces '(m n a b x y)
>   (m1:add) ;produces '(a b x y)
>
>   ...
> )
>
>
>
>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.racket-lang.org/users/archive/attachments/20120119/888cf0e2/attachment.html>

Posted on the users mailing list.