Well, it's an unformalised and not much thought about out-of-the-tub idea, but here it goes:
Let there be a monad/typeclass representing the denotional semantics of Haskell Do some instances of it, called e.g. GHC or Hugs. so, instead of main :: IO () we have main :: (Haskell h) => h (IO ()) or, if you need some feature of the Haskell runtime system XYZ main :: XYZ (IO ()) or even main :: (FFI h) => h (IO ()) and main :: (SomeLib h) => h (IO ()) , and then go on and define every single language construct as part of this type hierarchy, and define some syntactic sugar to make stuff look exactly like haskell '98 if you're just hacking away. I especially like the metacircularity of this approach, and the fact that every Model (read: implementation) of Haskell would have to admit that it is only a Model (read: instance) of Haskell. -- (c) this sig last receiving data processing entity. Inspect headers for past copyright information. All rights reserved. Unauthorised copying, hiring, renting, public performance and/or broadcasting of this signature prohibited. _______________________________________________ Haskell-prime mailing list Haskell-prime@haskell.org http://www.haskell.org/mailman/listinfo/haskell-prime