
[removing cross-posing to H'] On Apr 5, 2006, at 4:54 AM, Bulat Ziganshin wrote:
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.
This is my sincere hope. Edison has been waiting for almost ten years for Haskell to develop to the point that it can be standards- compliant!
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
This is interesting. However, I think I'd like to stay away from dipping into C for this project.
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/ FlexibleInstances
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?
That is a good idea.
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
Perhaps. However, I've been following the discussion, and I'm still having a hard time telling which way the wind is blowing, especially with respect to MPTC. I think we may have to wait a little longer before we start drawing up the odds.
-- Best regards, Bulat mailto:Bulat.Ziganshin@gmail.com
Thanks for your comments! Rob Dockins Speak softly and drive a Sherman tank. Laugh hard; it's a long way to the bank. -- TMBG