Re: [Scheme-reports] WG2 Scheme and Polymporphism Eduardo Cavazos 14 Oct 2011 23:30 UTC

Denis Washington wrote:
> **Take the sequence operations as an example. Each of them only works on a
> specific type of sequence - there are separate procedures to retrieve
> the length of a list, a vector, a bytevector or a string, for instance.
> As a consequence, it is impossible to write procedures that operate on
> arbitrary sequences without excessive special-casing. For instance,
> writing a generic version of "map" or "filter" would require an ugly
> "cond" expression handling each type of sequence individually. And even
> then, there would still be the problem that there would be no way to
> create user-defined types that act "as if" they were sequences (like
> e.g. lazy sequences or streams).
I also think it's a little silly to have to implement 'map' separately
for strings, vectors, bytevectors, etc. Here's one approach to solving
this problem:

https://github.com/dharmatech/indexable-sequence

Note that in the above system, some of the operations which are
traditionally procedures (e.g. fold-left) are defined as macros.
However, they don't have to be macros; this was just an optimisation and
an experimental choice.

As far as polymorphic code goes, here's an approach to that:

https://gist.github.com/585469

And some fancier syntax for the above:

https://gist.github.com/631397

Ed

_______________________________________________
Scheme-reports mailing list
Scheme-reports@scheme-reports.org
http://lists.scheme-reports.org/cgi-bin/mailman/listinfo/scheme-reports