Tackling the atrocious squad

Achim Schneider barsoap at web.de
Tue May 6 09:57:21 EDT 2008

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

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 ())


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. 

More information about the Haskell-prime mailing list