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