
Hello Robert, Wednesday, April 5, 2006, 3:50:41 AM, you wrote:
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.
according to my experience - one can't write real programs in H98. one of the reasons why H' was started is to define standard for writing such programs. on the current moment GHC and Hugs are close enough to that we should see in this standard. They supports MPTC, FD, Typeable, more flexible instances declarations, and i think that you can work with assertions via preprocessor. so i recommend you to use GHC+Hugs compatibility as the first goal but avoid using of features that they both support but there is no exact definition (such as undecidable instances), as i itself do. This allows you and your users to use two the best Haskell implementations - one for debugging, other for production code, and almost ensure that your code will be H' compatible or require minimal changes. about Typeable - i attached file from ghc sources that allows to define instances both for Hugs and GHC. you can see examples of it's use in base libraries. it works for me for ghc641 and hugs2005 about undecidable instances - hugs and ghc 6.5 contains more liberate rule for checking decidability and i hope that it will be included in the H', see details on the http://haskell.galois.com/cgi-bin/haskell-prime/trac.cgi/wiki/FlexibleInstan... and last but not least ;) language extensions that we absolutely need to use will probably go into the standard. may be the library/apps authors that use some extensions should write about this on the appropriate H' proposals pages to let committee know? ps: may be, we can/should create page with the list of extensions that probably will go into the standard? or just adjust the corresponding fields in the existing table? such info would be very helpful for developers, imho. not anyone has enough time and willing to follow all of the H' discussions -- Best regards, Bulat mailto:Bulat.Ziganshin@gmail.com