GHCi grumbles (3)

George Russell ger@tzi.de
Wed, 15 Aug 2001 16:04:49 +0200


It should be possible to change
(1) the environment returned by System.getEnv
(2) the arguments returned by System.getArgs
(3) System.getProgName
in GHCi (for example, using :set).

By the way, my partial solution to grumble (1) is

:def modules (\ modulesStr -> do { let { imports = Prelude.map (\ modName -> ("import "++(if modName == "+" then "Prelude" else modName)++"\n")) (Prelude.words modulesStr) ; imod = "module XYZZY where \n"++(Prelude.concat imports) } ; Prelude.writeFile "/tmp/XYZZY.hs" imod ; Prelude.return ":load /tmp/XYZZY.hs" } )

Now if only I had a Haskell function for replacing a Haskell declaration or
expression using layout with the appropriate ({/;/}) functions, I could write
a :def macro
:code
   (complicated
   thing split over
   several lines)
:edoc
 which put everything together and compiled it.  Is there a contest for 
"Worst Abuse of :def"?