Since 4.ss in srfi is nothing other than:<br><br>(require (matching-identifiers-in #px&quot;\\b_?[suf](8|16|32|64)vector\\b&quot;<br>                                  scheme/foreign))<br>(provide (all-from-out scheme/foreign))<br>
<br>I assume just requiring SRFI 4 is negligible overhead and I might as well just use it.<br><br>Doug<br><br><div class="gmail_quote">On Fri, Dec 18, 2009 at 11:45 AM, Robby Findler <span dir="ltr">&lt;<a href="mailto:robby@eecs.northwestern.edu">robby@eecs.northwestern.edu</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">The two different -&gt; s are really different things, so when you have<br>
both of them in a single file you need to do something to distinguish<br>
between them. I think that in this case, probably the best thing is to<br>
prefix the foreign imports with, say, f:.<br>
<br>
Robby<br>
<br>
On Fri, Dec 18, 2009 at 12:42 PM, Doug Williams<br>
<div><div></div><div class="h5">&lt;<a href="mailto:m.douglas.williams@gmail.com">m.douglas.williams@gmail.com</a>&gt; wrote:<br>
&gt; I just tried removing my dependency on SRFI 4 by using the scheme/foreign<br>
&gt; module (which also defines them). However, when I require the scheme/foreign<br>
&gt; module, I have a problem. It has the following snippet of code:<br>
&gt;<br>
&gt; (provide -&gt;) ; to signal better errors when trying to use this with<br>
&gt; contracts<br>
&gt; (define-syntax -&gt;<br>
&gt;   (syntax-id-rules ()<br>
&gt;     [_ (raise-syntax-error &#39;-&gt; &quot;should be used only in a _fun context&quot;)]))<br>
&gt;<br>
&gt; So, my function contracts in the requiring module now give an error.<br>
&gt;<br>
&gt; I&#39;ve never used the FFI interface, but I can see that it uses -&gt; as part of<br>
&gt; the syntax for defining foreign functions. But, the comment &quot;to signal<br>
&gt; better errors when trying to use this with contracts&quot; would imply it is<br>
&gt; supposed to help me somehow, not disallow the use of function contracts with<br>
&gt; something that requires scheme/foreign. Am I missing something?<br>
&gt;<br>
&gt;<br>
&gt; On Fri, Dec 18, 2009 at 10:02 AM, Doug Williams<br>
&gt; &lt;<a href="mailto:m.douglas.williams@gmail.com">m.douglas.williams@gmail.com</a>&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt; Matthew,<br>
&gt;&gt;<br>
&gt;&gt; Attached is a zip file with some homogeneous vector and array code I was<br>
&gt;&gt; working on in the past. The code in vtype.ss abstracts the definitions of<br>
&gt;&gt; the various SFRI 4 vector types (and regular Scheme vectors). The vector<br>
&gt;&gt; types it knows about are object (i.e., straight Scheme heterogeneous<br>
&gt;&gt; vectors), u(8,16,32,64), s(8,16,32,64), and f(32,64). There are also complex<br>
&gt;&gt; vectors of the numeric types cu(8,16,32,64), cs(8,16,32,64), and cf(32,64).<br>
&gt;&gt; The code in type-vector.ss abstracts the vector types describes in vtype.ss<br>
&gt;&gt; into a single typed-vector type. The code in array.ss provides the array<br>
&gt;&gt; abstraction with the underlying data stored as a typed-vector. Finally, the<br>
&gt;&gt; array-test.ss test the array abstraction. [Just running array-test.ss will<br>
&gt;&gt; give you a pretty good idea about the array abstraction.]<br>
&gt;&gt;<br>
&gt;&gt; The intent is to provide a homogeneous array implementation similar to the<br>
&gt;&gt; underlying arrays in Matlab (or numpy in Python). This is what I would like<br>
&gt;&gt; to make more efficient and better integrated into the rest of PLT Scheme.<br>
&gt;&gt;<br>
&gt;&gt; So, I guess the questions are:<br>
&gt;&gt;<br>
&gt;&gt; 1) Should I skip SRFI 4 altogether? The SRFI 4 implementation just exports<br>
&gt;&gt; things from scheme/foreign, so it would probably make sense to go straight<br>
&gt;&gt; to it. But, I am also using the naming convention from SRFI 4.<br>
&gt;&gt;<br>
&gt;&gt; 2) How would array slicing best look syntactically? I have a simple<br>
&gt;&gt; slicing capability there now so you can see what it looks like. But<br>
&gt;&gt; basically, for any dimension, you can specify a list (start end step) and<br>
&gt;&gt; any element can be wildcarded using * - also, the whole dimension can be<br>
&gt;&gt; wildcarded. Efficient slicing (e.g., no copying required) is an important<br>
&gt;&gt; element of the design.<br>
&gt;&gt;<br>
&gt;&gt; 3) How would we best tie it to the rest og PLT Scheme? In particular, it<br>
&gt;&gt; would be nice to have efficient implementations of the various for routines<br>
&gt;&gt; that just strided through the underlying vector efficiently. But, I think<br>
&gt;&gt; that will require knowledge of the underlying vector type. etc and might be<br>
&gt;&gt; a lot of work.<br>
&gt;&gt;<br>
&gt;&gt; So, I think getting a really efficient implementation would require<br>
&gt;&gt; significant coordination with the PLT developers. My long-term goal (as<br>
&gt;&gt; you&#39;ve probably heard me say before) is to get a Matlab-like (or<br>
&gt;&gt; Matlab-lite) analysis capability.<br>
&gt;&gt;<br>
&gt;&gt; Any thoughts?<br>
&gt;&gt;<br>
&gt;&gt; Doug<br>
&gt;&gt;<br>
&gt;&gt; On Fri, Dec 18, 2009 at 8:41 AM, Matthew Flatt &lt;<a href="mailto:mflatt@cs.utah.edu">mflatt@cs.utah.edu</a>&gt; wrote:<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; In case anyone is already using the `flvector&#39; operations, they&#39;ve<br>
&gt;&gt;&gt; moved to a new `scheme/flonum&#39; library.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; (I&#39;m preparing a post about `scheme/flonum&#39; for the plt-scheme list.)<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; _________________________________________________<br>
&gt;&gt;&gt;  For list-related administrative tasks:<br>
&gt;&gt;&gt;  <a href="http://list.cs.brown.edu/mailman/listinfo/plt-dev" target="_blank">http://list.cs.brown.edu/mailman/listinfo/plt-dev</a><br>
&gt;&gt;<br>
&gt;<br>
&gt;<br>
&gt; _________________________________________________<br>
&gt;  For list-related administrative tasks:<br>
&gt;  <a href="http://list.cs.brown.edu/mailman/listinfo/plt-dev" target="_blank">http://list.cs.brown.edu/mailman/listinfo/plt-dev</a><br>
&gt;<br>
&gt;<br>
</div></div></blockquote></div><br>