From: Rene de Visser
Subject: MIT Series package: opinion / experience
Date: 
Message-ID: <ae2l8f$leq$1@news1.wdf.sap-ag.de>
Hello,

Is it worthwhile to learn to use the series package for lisp?

I have had a look on the internet for any programs that use it extensively,
so I can see what it looks like to use series on a large scale, rather than
using normal loops.

I haven't been able to find any.

Maybe someone can suggest one? Or is the series package hardly used at all?

Rene.
From: Joe Marshall
Subject: Re: MIT Series package: opinion / experience
Date: 
Message-ID: <MHtO8.35186$nZ3.6639@rwcrnsc53>
"Rene de Visser" <··············@hotmail.de> wrote in message ·················@news1.wdf.sap-ag.de...
> Hello,
>
> Is it worthwhile to learn to use the series package for lisp?

It depends on what you think is worthwhile.

> I have had a look on the internet for any programs that use it extensively,
> so I can see what it looks like to use series on a large scale, rather than
> using normal loops.
>
> I haven't been able to find any.

There are very few programs that I have seen that use the series package
extensively.

> Maybe someone can suggest one? Or is the series package hardly used at all?

It doesn't seem to be used very much.

I've done some experimenting with it and have been using it fairly extensively
and it has some good points and some bad points.  On the sort of problems it
was designed for, it works *really* nicely.  However, when you stray out of that
problem domain it tends to turn into a complicated mess.  One difficulty is that
it isn't obvious which problems `fit' and which don't.

I have found some minor bugs in the series code.  It is *extremely* difficult to
debug the series code itself because it is not extensively documented.  You really
have to treat it as a black-box (unless you are very familiar with data-flow
analysis).

There are some very painful deficiencies:  I haven't figured out how to perform
a `flatmap' (i.e., suppose you have a function that computes a series from a
scalar object.  You want to map that function over a series of scalars and
*append* each series resulting from calling the function.  The input series obviously
needs to be `off-line', and the output series should be `on-line'.)
Too often I've had to resort to writing basic transducers using the primitive
series functions (the producing macro).