[racket] Best practices for installing and using R6RS libraries with Racket on Windows
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 <https://github.com/dharmatech/mpl>
>
> Ed
> ____________________
> Racket Users list:
> http://lists.racket-lang.org/**users <http://lists.racket-lang.org/users>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.racket-lang.org/users/archive/attachments/20120119/dab88bdc/attachment-0001.html>