LazyArray, Supply libraries...

Jan-Willem Maessen jmaessen@alum.mit.edu
Mon, 25 Feb 2002 11:10:53 -0500


Hello all -

As it seems there's continued interest in the LazyArray library
outside of the small circle of HBCLibs users, it seems like there
ought to be a place for it in the Haskell library hierarchy.

I have working code that we've been using for several months now, but
which I cleaned up and documented a bit over the weekend.  I posted
the link to Haskell-Cafe on Saturday, but here it is again:

  http://www.csg.lcs.mit.edu/~earwig/haskell-lib/

The LazyArray library is ready to ship, and I'm eager to donate it to
the cause if it's wanted.  It could, for example, be added to hslibs
or given a place in the Grand New Library Hierarchy.  What hoops must
be jumped through?

The Supply library is not as well tested; the old library proposal
mentioned a "LibSupply" of generic splittable supplies, though, and I
can find no actual implementation or even a proposed interface beyond
the existence of the type "Supply a".  I suspect it will work fine in
its present form, but would like to deal with the following:

* If you know of another implementation, could you please send me a
  pointer?  I'll try to get a united interface.  I suspect existing
  LibSupply -ish implementations don't implement fmap and zip-like
  functions, but I'd love to be pleasantly surprised.  I'm not totally
  satisfied with my function names, and would love to compare notes
  with another implementation if one exists.

* Along the same lines, I'd love to hear comments on the
  functionality.  Too much?  Awful names?

* I want to re-code NameSupply from HBCLibs using Supply.  (I already
  ported NameSupply to GHC, which is what gave me enough clue to write
  Supply in the first place.)

* It'd be nice to do an implementation of Random in terms of Supply as
  well.  I suspect this would actually improve the kludgey Random in
  hugs at least.  I don't really use Random regularly myself, but
  re-coding the hugs library should be easy enough that it won't be
  any worse than it already is.

* I'd like to switch the Eager Haskell compiler over to a re-coded
  NameSupply to reinforce my confidence in the implementation.  

Note the other stuff mentioned on the web page will need a lot more
work to be shippable.  I urgently needed enumerable, joinable maps,
but I haven't actually found the time to deploy them yet.  Most of the
other libraries depend on precursors of joinable fast sets/maps.

Jan-Willem Maessen