Thanks Jay for this link. This is a most comprehensive system that seems to cover what I need, and a fair bit more as well. It will take me a while to get through the manual but I hope there are nuggets of insight contained within.<div>

One thing surprises me though, it seems there are as many different approaches to this problem as there are implementations. There doesn&#39;t even seem to be a canonical language for describing multi-dimensional sets (that I&#39;ve discovered, at any rate). I&#39;ll keep at it and post progress to this list. Thanks again,</div>

<div>Simon.</div><div><br></div><div><br></div><div class="gmail_extra"><br><br><div class="gmail_quote">On 6 November 2012 15:29, Jay McCarthy <span dir="ltr">&lt;<a href="mailto:jay.mccarthy@gmail.com" target="_blank">jay.mccarthy@gmail.com</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I would suggest looking into PADS as well:<br>
<br>
<a href="http://www.padsproj.org/doc.html" target="_blank">http://www.padsproj.org/doc.html</a><br>
<div><div class="h5"><br>
On Mon, Nov 5, 2012 at 9:22 PM, Simon Haines<br>
&lt;<a href="mailto:simon.haines@con-amalgamate.net">simon.haines@con-amalgamate.net</a>&gt; wrote:<br>
&gt; As part of my work, I frequently have to &#39;shape&#39; multi-dimensional datasets.<br>
&gt; This is reasonably easy to do in Racket and I&#39;m thinking about pulling<br>
&gt; together some of the functions I use into a library. Before I do this<br>
&gt; though, I was wondering if there is any similar work I can build upon, or<br>
&gt; perhaps use to guide me.<br>
&gt;<br>
&gt; As an example of what I mean, I&#39;ll receive from a colleague a file like<br>
&gt; this:<br>
&gt;<br>
&gt; Date, Site, Total Alkalinity as CaCO3 (mg/L), Carbonate as CaCO3 (mg/L),<br>
&gt; 1-Nov-12, BH1, 120, &lt;5<br>
&gt; 1-Nov-12, BH2, 180, &lt;5<br>
&gt; 1-Nov-12, BH3, 160, &lt;5<br>
&gt; 26-Oct-12, BH1, 150, &lt;1<br>
&gt; 26-Oct-12, BH2, 165, 0<br>
&gt; 26-Oct-12, BH3, 180, &lt;5<br>
&gt;<br>
&gt; (This is a laboratory analysis of water sampled from bore holes).<br>
&gt;<br>
&gt; This file is composed of two datasets (a set each of total alkalinity and<br>
&gt; carbonate), with shared dimensions of &#39;date&#39; and &#39;site&#39;. I&#39;ll often deal<br>
&gt; with files containing up to 80 datasets.<br>
&gt;<br>
&gt; More often than not, all I&#39;ll need to do is &#39;shape&#39; these datasets into a<br>
&gt; format that can be pulled into a spreadsheet for further analysis/graphing.<br>
&gt; One example is:<br>
&gt;<br>
&gt; &quot;&quot;, Total Alkalinity as CaCO3 (mg/L), Carbonate as CaCO3 (mg/L)<br>
&gt; BH1<br>
&gt; 1-Nov-12, 120, &lt;5<br>
&gt; 26-Oct-12, 150, &lt;1<br>
&gt; BH2<br>
&gt; 1-Nov-12, 180, &lt;5<br>
&gt; 26-Oct-12, 165, 0<br>
&gt; BH3<br>
&gt; 1-Nov-12, 160, &lt;5<br>
&gt; 26-Oct-12, 180, &lt;5<br>
&gt;<br>
&gt; Another example:<br>
&gt;<br>
&gt; &quot;&quot;, BH1, BH2, BH3<br>
&gt; Total Alkalinity as CaCO3 (mg/L)<br>
&gt; 1-Nov-12, 120, 180, 160<br>
&gt; 26-Oct-12, 150, 165, 180<br>
&gt; Carbonate as CaCO3 (mg/L)<br>
&gt; 1-Nov-12, &lt;5, &lt;5, &lt;5<br>
&gt; 26-Oct-12, &lt;1, 0, &lt;5<br>
&gt;<br>
&gt; As you can see, the recursive nature of these reports makes them ideal for<br>
&gt; processing with Racket, and although it takes me a little while to get the<br>
&gt; format of a report right, I usually can add the report to my toolbox for<br>
&gt; whenever it&#39;s needed later.<br>
&gt;<br>
&gt; So I&#39;ve started drafting what I think a good DSL for doing this type of task<br>
&gt; might be, something like:<br>
&gt; (define-dataset<br>
&gt;   (date (date &#39;dd-MM-yyyy&#39;))<br>
&gt;   (site (text))<br>
&gt;   (parameter (text)) ...)<br>
&gt;<br>
&gt; (define-report example1<br>
&gt;   (columns (parameter ...))<br>
&gt;   (rows ((site) date)))<br>
&gt;<br>
&gt; I haven&#39;t worked out the details yet, and I&#39;m not sure the above will work<br>
&gt; the way I want it to. But I&#39;ve had a quick look at Microsoft&#39;s Scientific<br>
&gt; DataSet (<a href="http://sds.codeplex.com/" target="_blank">http://sds.codeplex.com/</a>), but it lacks the composability I&#39;m used<br>
&gt; to with Racket. Is anyone aware of any similar work that does this, or that<br>
&gt; I could use as a guide?<br>
&gt;<br>
&gt; Thanks,<br>
&gt; Simon.<br>
&gt;<br>
</div></div>&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>
<span class="HOEnZb"><font color="#888888"><br>
<br>
<br>
--<br>
Jay McCarthy &lt;<a href="mailto:jay@cs.byu.edu">jay@cs.byu.edu</a>&gt;<br>
Assistant Professor / Brigham Young University<br>
<a href="http://faculty.cs.byu.edu/~jay" target="_blank">http://faculty.cs.byu.edu/~jay</a><br>
<br>
&quot;The glory of God is Intelligence&quot; - D&amp;C 93<br>
</font></span></blockquote></div><br></div>