Replacing the Prelude

Ashley Yakeley ashley@semantic.org
Sun, 12 May 2002 21:31:38 -0700


I have recently been experimenting writing code that replaces large 
chunks of the Prelude, compiling with -fno-implicit-prelude. I notice 
that I can happily redefine numeric literals simply by creating functions 
called 'fromInteger' and 'fromRational': GHC will use whatever is in 
scope for those names.

I was hoping to do something similar for 'do' notation by redefining 
(>>), (>>=) etc., but unfortunately GHC is quite insistent that 'do' 
notation quite specifically refers to GHC.Base.Monad (i.e. Prelude.Monad, 
as the Report seems to require). I don't suppose there's any way of 
fooling it, is there? I was rather hoping 'do' notation would work like a 
macro in rewriting its block, and not worry about types at all.

I accept that this might be a slightly bizarre request. There are a 
number of things I don't like about the way the Prelude.Monad class and 
'do' notation are set up, and it would be nice to be able to experiment 
with alternatives.

-- 
Ashley Yakeley, Seattle WA