[prev in list] [next in list] [prev in thread] [next in thread] 

List:       racket-dev
Subject:    [racket-dev] current-load/use-compiled
From:       robby () eecs ! northwestern ! edu (Robby Findler)
Date:       2011-06-22 22:54:48
Message-ID: BANLkTik4Di5S9NS9_QS9Rq8jTRbf692svg () mail ! gmail ! com
[Download RAW message or body]

Did you find the compiler/cm library? I think that's what you want.

Robby

On Thu, Jun 23, 2011 at 12:24 AM, Jon Rafkind <rafkind at cs.utah.edu> wrote:
> I'm trying to hook into the part of racket that loads files so I can
> automatically create .zo files when they don't exist (and no, I don't
> want to type raco make). Here is the code that loads the file and sets
> up the handler (more explanation follows the code).
>
> == load.rkt
> (let ([namespace (make-base-namespace)])
> ?(define loader (current-load/use-compiled))
> ?(parameterize ([current-namespace namespace]
> ? ? ? ? ? ? ? ? [current-load/use-compiled
> ? ? ? ? ? ? ? ? ? (lambda (path something)
> ? ? ? ? ? ? ? ? ? ? (define-values (parent self _) (split-path path))
> ? ? ? ? ? ? ? ? ? ? (parameterize ([current-load-relative-directory
> parent])
> ? ? ? ? ? ? ? ? ? ? ? (printf "compile/load ~a ~a\n" path something)
> ? ? ? ? ? ? ? ? ? ? ? (printf "load directory ~a\n"
> (current-load-relative-directory))
> ? ? ? ? ? ? ? ? ? ? ? #;
> ? ? ? ? ? ? ? ? ? ? ? ((compile-zos #f #:module? #t) (list path)
> "compiled")
> ? ? ? ? ? ? ? ? ? ? ? (define load-path
> ? ? ? ? ? ? ? ? ? ? ? ? (if (is-zo? path)
> ? ? ? ? ? ? ? ? ? ? ? ? ? path
> ? ? ? ? ? ? ? ? ? ? ? ? ? (build-path parent "compiled"
> (path-add-suffix self #".zo"))))
> ? ? ? ? ? ? ? ? ? ? ? (printf "Loading file ~a\n" load-path)
> ? ? ? ? ? ? ? ? ? ? ? (loader load-path something)))])
> ? ?(eval-syntax (with-syntax ([file "test.rkt"])
> ? ? ? ? ? ? ? ? ? #'(require file)))))
>
> And here are the files being loaded
> == test.rkt
> #lang racket/base
>
> (require "test1.rkt")
>
> (printf "hello from test!\n")
>
> == test1.rkt
> #lang racket/base
>
> (require (for-syntax racket/base))
>
> (define-syntax (foo stx)
> ?(printf "hello from foo macro\n")
> ?#'(void))
>
> (foo)
>
> #;
> (begin-for-syntax
> ?(printf "hello from phase1 code\n"))
>
> (printf "test1!\n")
>
> If I uncomment the 'begin-for-syntax' expression and run 'raco make' to
> produce a .zo file then running 'racket test.rkt' won't display the
> "hello from phase1 code" line. However if I run 'load.rkt' then no
> matter if there is a .zo or not I see that printf being executed.
> _________________________________________________
> ?For list-related administrative tasks:
> ?http://lists.racket-lang.org/listinfo/dev
>



[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic