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

Reply via email to