My thought was that someone might still want a 1-ref.ss that provides
things "the reference implentation way", for portability. (i.e. i was
unsure if the "polymorpic" token in the mzlib/list.ss definitions
caused any compatibility issues with the reference
implementation).  Personally changing srfi/1/selector.ss is fine
with me too.<br>
<br>
<br>
I guess the next question is, is any of the srfi functionality missing
in the mzlib/list.ss functions?&nbsp; for example, srfi-1 specs that
infintie lists are allowed to be passed to map, <br>
<br>
<br>
----<br>
I think it'd go something like:<br>
&nbsp;&nbsp;&nbsp; {i didn't get to test this one, I wrote it directly as a patch}<br>
<br>
<br>
*** selector.ss.orig&nbsp;&nbsp;&nbsp; Thu Apr 13 16:03:25 2006<br>
--- selector.ss&nbsp;&nbsp;&nbsp; Thu Apr 13 16:04:20 2006<br>
***************<br>
*** 37,42 ****<br>
--- 37,45 ----<br>
&nbsp; <br>
&nbsp;&nbsp;&nbsp; (require (lib &quot;optional.ss&quot; &quot;srfi&quot;))<br>
&nbsp;&nbsp;&nbsp; (require (lib &quot;receive.ss&quot; &quot;srfi&quot; &quot;8&quot;))<br>
+&nbsp;&nbsp; (require (only (lib &quot;list.ss&quot; &quot;mzlib&quot;) <br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; third fourth fifth sixth seventh eighth))<br>
+ <br>
&nbsp; <br>
&nbsp;&nbsp;&nbsp; (provide<br>
&nbsp;&nbsp;&nbsp;&nbsp; first second<br>
***************<br>
*** 54,63 ****<br>
&nbsp; <br>
&nbsp;&nbsp;&nbsp; (define first&nbsp; car)<br>
&nbsp;&nbsp;&nbsp; (define second cadr)<br>
!&nbsp;&nbsp; (define third&nbsp; caddr)<br>
!&nbsp;&nbsp; (define fourth cadddr)<br>
!&nbsp;&nbsp; (define (fifth&nbsp;&nbsp; x) (car&nbsp;&nbsp;&nbsp; (cddddr x)))<br>
!&nbsp;&nbsp; (define (sixth&nbsp;&nbsp; x) (cadr&nbsp;&nbsp; (cddddr x)))<br>
!&nbsp;&nbsp;&nbsp; (define (seventh x) (caddr&nbsp; (cddddr x)))<br>
!&nbsp;&nbsp;&nbsp; (define (eighth&nbsp; x) (cadddr (cddddr x)))<br>
&nbsp;&nbsp;&nbsp; (define (ninth&nbsp;&nbsp; x) (car&nbsp; (cddddr (cddddr x))))<br>
--- 57,66 ----<br>
&nbsp; <br>
&nbsp;&nbsp;&nbsp; (define first&nbsp; car)<br>
&nbsp;&nbsp;&nbsp; (define second cadr)<br>
! ;&nbsp; (define third&nbsp; caddr)<br>
! ;&nbsp; (define fourth cadddr)<br>
! ;&nbsp; (define (fifth&nbsp;&nbsp; x) (car&nbsp;&nbsp;&nbsp; (cddddr x)))<br>
! ;&nbsp; (define (sixth&nbsp;&nbsp; x) (cadr&nbsp;&nbsp; (cddddr x)))<br>
! ;&nbsp; (define (seventh x) (caddr&nbsp; (cddddr x)))<br>
! ;&nbsp; (define (eighth&nbsp; x) (cadddr (cddddr x)))<br>
&nbsp;&nbsp;&nbsp; (define (ninth&nbsp;&nbsp; x) (car&nbsp; (cddddr (cddddr x))))<br>
<br><br>
<br>
Corey<br>
<br><div><span class="gmail_quote">On 4/13/06, <b class="gmail_sendername">Robby Findler</b> &lt;<a href="mailto:robby@cs.uchicago.edu">robby@cs.uchicago.edu</a>&gt; wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
It also seems to make sense to have collects/srfi/1/selector.ss<br>re-export (lib &quot;list.ss&quot;)'s definitions instead of defining its own.<br>Did you consider that one?<br><br>Robby<br><br>At Thu, 13 Apr 2006 13:56:37 -0500, &quot;Corey Sweeney&quot; wrote:
<br>&gt; Ok, I took a look, and obviously &quot;mzlib/list.ss&quot; can't be missing any of the<br>&gt; srfi functionality for these functions, so i propose starting with the<br>&gt; following changes:<br>&gt;<br>&gt; copy srfi/1.ss to srfi/1-
ref.ss<br>&gt;<br>&gt;<br>&gt;<br>&gt; *** /home/corey/1.ss&nbsp;&nbsp;&nbsp;&nbsp;Thu Apr 13 13:49:27 2006<br>&gt; --- /home/corey/1.ss.orig&nbsp;&nbsp;&nbsp;&nbsp;Thu Apr 13 13:41:02 2006<br>&gt; ***************<br>&gt; *** 1,13 ****<br>&gt;&nbsp;&nbsp; ;; module loader for SRFI-1
<br>&gt;&nbsp;&nbsp; (module |1| mzscheme<br>&gt;<br>&gt; !&nbsp;&nbsp; (require (all-except (lib &quot;list.ss&quot; &quot;srfi&quot; &quot;1&quot;)<br>&gt;
!&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;third
fourth fifth sixth))<br>&gt; !&nbsp;&nbsp; (require (only (lib &quot;list.ss&quot; &quot;mzlib&quot;)<br>&gt; !&nbsp;&nbsp;&nbsp;&nbsp; third fourth fifth sixth))<br>&gt;<br>&gt; !&nbsp;&nbsp; (provide&nbsp;&nbsp;third fourth fifth sixth<br>&gt; !&nbsp;&nbsp;&nbsp;&nbsp; (all-from-except (lib &quot;
list.ss&quot; &quot;srfi&quot; &quot;1&quot;)<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s:append!
s:reverse!<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s:map s:for-each<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s:member<br>&gt; --- 1,9 ----<br>&gt;&nbsp;&nbsp; ;; module loader for SRFI-1<br>&gt;&nbsp;&nbsp; (module |1| mzscheme<br>&gt;<br>&gt; !&nbsp;&nbsp; (require (lib &quot;list.ss
&quot; &quot;srfi&quot; &quot;1&quot;))<br>&gt;<br>&gt; !&nbsp;&nbsp; (provide (all-from-except (lib &quot;list.ss&quot; &quot;srfi&quot; &quot;1&quot;)<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s:append!
s:reverse!<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s:map s:for-each<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s:member<br>&gt;<br>&gt;<br>&gt; On 4/13/06, Corey Sweeney &lt;<a href="mailto:corey.sweeney@gmail.com">corey.sweeney@gmail.com</a>&gt; wrote:
<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt; On 4/12/06, Danny Yoo &lt;<a href="mailto:dyoo@hkn.eecs.berkeley.edu">dyoo@hkn.eecs.berkeley.edu</a>&gt; wrote:<br>&gt; &gt; &gt;<br>&gt; &gt; &gt;<br>&gt; &gt; &gt;<br>
&gt; &gt; &gt; and not see conflicts.&nbsp;&nbsp;And we can go the extra step and put the srfi-1<br>&gt; &gt; &gt; functions into my-big-language as well.&nbsp;&nbsp;This does pretty much what<br>&gt; &gt; &gt; you're<br>&gt; &gt; &gt; planning earlier, except we avoid touching 
plt-pretty-big-text.ss .<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt; Agreed<br>&gt; &gt;<br>&gt; &gt; (Aside: I feel really cheesy about doing a copy-and-paste here; is there a<br>&gt; &gt; &gt; nicer way to do this?)<br>&gt; &gt;
<br>&gt; &gt;<br>&gt; &gt; Well one way would be to make mzlib/list.ss just require then provide it's<br>&gt; &gt; functions from list.ss.&nbsp;&nbsp;However if mzlib/list.ss has some advantage over<br>&gt; &gt; srfi/1/list.ss , (performance?) then we could have srfi/1/list.ss require
<br>&gt; &gt; those functions that are in mzlib/list.ss , and are not extended by<br>&gt; &gt; srfi/1/list.ss , and then require/provide just those functions that have<br>&gt; &gt; extended functionality into mzlib/list.ss .
<br>&gt; &gt;<br>&gt; &gt; By the way, what is the advantage of the functions writen in mzlib/list.ss<br>&gt; &gt; that are also in srfi/1/list.ss?<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt; Corey<br>&gt; &gt;<br>&gt; &gt;<br>
&gt; &gt;<br>&gt; &gt; Best of wishes!<br>&gt; &gt; &gt;<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt; --<br>&gt; &gt; ((lambda (y) (y y)) (lambda (y) (y y)))<br>&gt; &gt;<br>&gt;<br>&gt;<br>&gt;<br>&gt; --<br>&gt; ((lambda (y) (y y)) (lambda (y) (y y)))
<br>&gt; _________________________________________________<br>&gt;&nbsp;&nbsp; For list-related administrative tasks:<br>&gt;&nbsp;&nbsp; <a href="http://list.cs.brown.edu/mailman/listinfo/plt-scheme">http://list.cs.brown.edu/mailman/listinfo/plt-scheme
</a><br></blockquote></div><br><br clear="all"><br>-- <br>((lambda (y) (y y)) (lambda (y) (y y)))