[racket] Best practices for installing and using R6RS libraries with Racket on Windows

From: Imran Rafique (imran at rafique.org)
Date: Thu Jan 19 18:04:39 EST 2012

Thanks. The last example is *very* useful :)

-- 
Regards,
       Imran Rafique


On 19 January 2012 14:57, Grant Rettke <grettke at acm.org> wrote:

> My cheatsheet:
>
>
> http://www.wisdomandwonder.com/link/2028/how-pltcollects-works-in-plt-scheme
>
> On Thu, Jan 19, 2012 at 4:50 PM, Imran Rafique <imran at rafique.org> wrote:
> > Responding to the 2nd part (raco -link)
> >
> > Both $PLTCOLLECTS & `raco -link` persist across different racket
> > installations (ie: they're independent of how and when you compiled &
> > installed racket itself), but it seems that collections directories
> added by
> > `raco -link` take precedence over $PLTCOLLECTS.
> >
> > Eg:
> > # contents = /foo/imran/prelude.rkt
> > export PLTCOLLECTS="/foo:"
> >
> > # contents = /foo2/prelude.rkt
> > raco -link -n imran /foo2
> >
> > Then, (require imran/prelude) *NEVER* looks in $PLTCOLLECTS. Even if the
> > copy in /foo2/prelude.rkt is a badly formed module, and
> > /foo/imran/prelude.rkt is correct.
> >
> > At least, thats what I discovered last night after installing from git :)
> >
> > --
> > Regards,
> >        Imran Rafique
> >
> >
> > On 19 January 2012 13:40, Eduardo Cavazos <wayo.cavazos at gmail.com>
> wrote:
> >>
> >> Hello,
> >>
> >> I've been testing out my MPL libraries with Racket 5.2 on Windows 7.
> >>
> >> I generally use R6RS implementations and libraries. Thus, I tend to keep
> >> my library directories in "~/scheme" on Linux or
> "c:\users\myhomedir\scheme"
> >> on Windows. MPL has two dependencies (surfage and dharmalab; mentioned
> in
> >> the README) that should also be present in the library collection.
> >>
> >> So to "install" MPL for Racket on Windows, I simply modified my
> >> PLTCOLLECTS environment variable. At first I simply defined it as:
> >>
> >>    c:\users\dharmatech\scheme
> >>
> >> However, having only that directory in PLTCOLLECTS caused major problems
> >> for DrRacket.
> >>
> >> My next step was to check the result of:
> >>
> >>    (get-collects-search-dirs)
> >>
> >> and include those paths in PLTCOLLECTS as well. That seemed to do the
> >> trick. So my PLTCOLLECTS variable now looks like:
> >>
> >> C:\Users\dharmatech\AppData\Roaming\Racket\5.2\collects;C:\Program Files
> >> (x86)\R
> >> acket\collects;c:\users\dharmatech\scheme
> >>
> >> I'd like to provide some basic instructions in the README for getting
> >> started in a Windows environment with Racket and MPL. Should I suggest
> that
> >> the PLTCOLLECTS variable be modified as I've done above?
> >>
> >> Section 6.1.3 of the Racket guide recommends using 'raco link' to
> install
> >> collections. Would this somehow be better than the PLTCOLLECTS
> approach? The
> >> drawback to this is that it appears that the user would have to 'raco
> link'
> >> all three library collections (i.e. surfage, dharmalab, mpl).
> >>
> >> Once installed, MPL appears to function properly. The test suite passes
> >> when I run:
> >>
> >> c:\Program Files (x86)\Racket>plt-r6rs
> >> c:\Users\dharmatech\scheme\mpl\test.sps
> >>
> >> I recently added an '(mpl all)' library which exports commonly used
> >> procedures and macros. So to get a REPL up an running, in a DrRacket
> >> definitions window add:
> >>
> >> #!r6rs
> >>
> >> (import (mpl rnrs-sans)
> >>        (mpl all))
> >>
> >> hit "Run" and the MPL procedures/macros should available in the
> >> interactions window.
> >>
> >> I normally write my Scheme code as R6RS libraries, not as Racket modules
> >> and I don't have much experience with the latter. It'd be nice if Racket
> >> module authors could import MPL libraries into their normal racket
> modules.
> >> Of course, MPL exports procedures that conflict naming-wise with
> traditional
> >> procedures like +, -, *, /, sin, cos, etc. How should I handle this in
> >> Racket modules? As a first attempt at mixing Racket and MPL I tried:
> >>
> >> #lang racket
> >>
> >> (require (lib "mpl/sum-product-power.sls"))
> >>
> >> When I multiply 'x' times 'x' I get:
> >>
> >> > (* 'x 'x)
> >> (mcons '^ (mcons 'x (mcons 2 '())))
> >>
> >> In Petite Chez Scheme I get:
> >>
> >> > (* 'x 'x)
> >> (^ x 2)
> >>
> >> I guess the 'mcons' stuff is due to the mutable/immutable pairs
> difference
> >> between R6RS and default racket.
> >>
> >> In R6RS, as shown above, I usually do '(import (mpl rnrs-sans) (mpl
> >> all))'. The library '(mpl rnrs-sans)' is equivalent to '(rnrs)' except
> for
> >> procedures which conflict name-wise with MPL procedures. Would you
> recommend
> >> setting up something similar for Racket so that the user can do:
> >>
> >> #lang racket-sans
> >>
> >> (require (lib "mpl/all.sls"))
> >>
> >> Thanks for any hints and tips!
> >>
> >> The MPL github project page is at:
> >>
> >> https://github.com/dharmatech/mpl
> >>
> >> Ed
> >> ____________________
> >>  Racket Users list:
> >>  http://lists.racket-lang.org/users
> >
> >
> >
> >
> > ____________________
> >  Racket Users list:
> >  http://lists.racket-lang.org/users
> >
>
>
>
> --
> http://www.wisdomandwonder.com/
> ACM, AMA, COG, IEEE
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.racket-lang.org/users/archive/attachments/20120119/4cae3763/attachment-0001.html>

Posted on the users mailing list.