[m-dev.] New datatype: rope

Peter Schachte schachte at csse.unimelb.edu.au
Thu Nov 11 14:36:05 AEDT 2010

>> how about generalising it by allowing segments of the
>> rope to be made of any instance of a sequence type class?  Then you could make
>> a rope from separate bits of strings, arrays, lists, substrings, basically
>> anything you have lying around that somehow implements a sequential collection
>> of homogeneous things?  I'm not sure what the best set of methods for the type
>> class are, but something equivalent to CAR, CDR, CONS and NIL.
> This is probably okay, provided that you include elem and slice operations and
> probably right-hand-side equivilents of CAR CDR and CONS.

What are "right-hand-side equivilents of CAR CDR and CONS"?

Maybe it would be worth including map, filter and fold in the type class?  Or
maybe just mapreduce?

> I'd also like to see
> more typeclasses in the standard library for collections.  Mutterings have also
> been made about first class, and possibly parametric modules.  That is, rather
> than use type classes use modules that can be parameterised by other modules.
>     import cord(list) as cord_using_lists
>     import cord(slice) as cord_using_slices

But that wouldn't achieve what I was after:  allowing mixing of various kinds
of sequences in a single rope.

Peter Schachte              Economists are like Aeolian harps, and the
University of Melbourne     sounds that issue from them are determined by
schachte at unimelb.edu.au     the winds that blow.
www.cs.mu.oz.au/~schachte/      -- Rebecca West
Phone: +61 3 8344 1338
mercury-developers mailing list
Post messages to:       mercury-developers at csse.unimelb.edu.au
Administrative Queries: owner-mercury-developers at csse.unimelb.edu.au
Subscriptions:          mercury-developers-request at csse.unimelb.edu.au

More information about the developers mailing list