Should I, (hypothetically); <br><br>Extend class.ss macros with a way to specify a class may be<br>- a &#39;collection&#39;, with matching; <br>&nbsp; + the data-structure to use, (List or BST)<br>&nbsp; + and a implementation of fold(for list, or the appropriate equivalent for BST&#39;s) (thanks Noel, very sensible advice)
<br><br>I&#39;m comfortable with extending classes, using class.ss, but I&#39;m unsure with extending macros, am I right in guessing that I would define a new macro that referred to the class macro.<br><br>Would it be cheating to make a class class? (class%) then use the class system to extend the class% class instead.&nbsp; 
<br><br>thanks,<br><br>Stephen<br><br><br><br><div class="gmail_quote">On Jan 8, 2008 1:00 PM, Matthias Felleisen &lt;<a href="mailto:matthias@ccs.neu.edu">matthias@ccs.neu.edu</a>&gt; wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
That looks perfectly fine to me, if it is otherwise acceptable to use<br>lists for storing the collection. (If you needed random access or<br>fast search, you might consider BST&#39;s instead. In that case, you&#39;d<br>have to write your own for-each.)
<br><br>The reason class.ss is a macro is so that people can evolve the<br>design of the class system and match it to their needs.<br><br>-- Matthias<br><div><div></div><div class="Wj3C7c"><br><br><br><br>On Jan 8, 2008, at 6:53 AM, Stephen De Gabrielle wrote:
<br><br>&gt; Hi,<br>&gt;<br>&gt; [Please excuse me if this is a silly question]<br>&gt;<br>&gt; I want to &#39;map&#39; or &#39;for-each&#39; of a collection object which is a<br>&gt; collection of other objects, in the same way as I would over a regular
<br>&gt; list (also filter from the list.ss List Utilities)<br>&gt;<br>&gt; I can just turn the collection of objects into a list of objects, but<br>&gt; it seems there might be a better way? &#39;for-each-object-on-collection
<br>&gt; object<br>&gt;<br>&gt; &nbsp; ;; collection of tuples<br>&gt; &nbsp; (define TupleSet% (class object%<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (define collection &#39;())<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (super-new)<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ;; insert : alist -&gt; void
<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (define/public (addTuple alist)<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (set! collection (cons (new Tuple%<br>&gt; [initial-fields alist] ); tuple<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;collection))
<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; )<br>&gt;<br>&gt;<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ;; getTupleCount : -&gt; number<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (define/public (getTupleCount)<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (length collection)
<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; )<br>&gt; &nbsp;... and so on ...<br>&gt;<br>&gt;<br>&gt; Should I just make up the smalltalk iterator equivalents as needed?<br>&gt; eg; &#39;do:&#39; from smalltalk<br>&gt;<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ;; do : tupleMethod -&gt; result
<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (define/public (do tupleMethod)<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (for-each<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(lambda (tuple) (send tuple tupleMethod) )<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; collection)
<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; )<br>&gt;<br>&gt; I&#39;m searching for the &#39;right&#39; way, or is this a silly question?<br>&gt;<br>&gt; Cheers,<br>&gt;<br>&gt; Stephen<br>&gt;<br>&gt;<br>&gt;<br>&gt; --<br>&gt; Stephen De Gabrielle
<br></div></div>&gt; _________________________________________________<br>&gt; &nbsp; For list-related administrative tasks:<br>&gt; &nbsp; <a href="http://list.cs.brown.edu/mailman/listinfo/plt-scheme" target="_blank">http://list.cs.brown.edu/mailman/listinfo/plt-scheme
</a><br><br></blockquote></div><br><br clear="all"><br>-- <br>Cheers,<br><br>Stephen<br><br><br><br>--<br>Stephen De Gabrielle<br><a href="mailto:s.degabrielle@ucl.ac.uk">s.degabrielle@ucl.ac.uk</a><br>Telephone +44 (0)20 7679 5242 (x45242)
<br>Mobile &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;079 851 890 45<br><a href="http://www.uclic.ucl.ac.uk/annb/MaSI.html">http://www.uclic.ucl.ac.uk/annb/MaSI.html</a><br>University College London Interaction Centre<br>Remax House - 31/32 Alfred Place
<br>London - WC1E 7DP<br><br>&quot;There&#39;s an old story about the person who wished his computer were as easy to use as his telephone. &nbsp;That wish has come true, since I no longer know how to use my telephone. &quot; -- Bjarne Stroustrup 
<br>