
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.

And what's the denotational semantics of type classes? As far as I know it
has never been done, because it's very complex.
On Tue, May 6, 2008 at 2:57 PM, Achim Schneider
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

"Lennart Augustsson"
And what's the denotational semantics of type classes? As far as I know it has never been done, because it's very complex.
I have no idea whatsoever, but dare to say that the target language just isn't appropriate, iff it turns out to be complex. As a matter of taste, I'd go for axiomatic semantics instead, exspecially if considering metacircularity. Lisp, for example, can be reduced to get! == set!, leaving all the confusion as an implementation detail. -- (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.
participants (2)
-
Achim Schneider
-
Lennart Augustsson