
Fellow Haskellers, The 3rd release candidate for Edison 1.2 is now avaliable. URLs to the project will appear at the end of this message. As with previous pre-releases, I am requesting comments on the API in particular. I believe I am approaching the point where I will feel comfortable freezing the 1.2 API, and I hope this will be the last release candidate before a 1.2 final. Major changes in 1.2rc3 are: * introduce the ambiguous/unambiguous concept and document all API operations * factor out methods which "mirror" superclass methods and make them alises instead * add lookupAndDelete* methods to associated collections * change the type of adjustOrDelete* in associated collections * rename subset/subsetEq to properSubset/subset * add matching Read and Show instances for all concrete datastructures * add properSubmap{By} submap{By} and sameMap{By} to the associated collection API * add Eq instances for concrete associated collections * break out the test suite into a separate sub-package The major remaining API issues I wish to request comments about have to do with class instances: 1) RC3 introduces Read and Show instances for all native Edison datastructures. However, StandardMap and StandardSet are just type aliases for Data.Map and Data.Set -- thus I can't provide Read and Show instances that are similar. So the question is, should I instead newtype these implementations so I can provide class instances which are consistent (as well as any other class instances I end up providing)? 2) Regarding Typeable and Data, what are your thoughts about the best way to provide Typeable and Data instances over abstract data types? I've considered playing the same trick that I do for Read/Show (which is internal conversions to/from lists). What do you think? 3) Are there any other class instances that are important to supply? And one final meta-API question; what are your thoughts about portability in general? I would like to support as many implementations as possible, but I'm already relying on MPTC, fundeps and undecidable instances (which may or may not be in H'), and I'm considering the following: -- instances of Typeable/Data (listed as non-portable) -- assertions (for checking preconditions) -- newtype deriving Anyway, I'm interested in your thoughts about how important portability is. ---------------------------------------- How to get Edison: Project page: http://www.eecs.tufts.edu/~rdocki01/edison.html Docs: http://www.eecs.tufts.edu/~rdocki01/docs/edison/index.html Source tarball: http://www.eecs.tufts.edu/~rdocki01/projects/edison-1.2rc3-source.tar.gz Darcs repo: http://www.eecs.tufts.edu/~rdocki01/edison/ Thanks! Rob Dockins