Simon Marlow wrote:
The test driver makes use of 'eval'-style scripting, which none of the existing Haskell systems has.
Doesn't the following qualify as eval? A similar code works even in Hugs.
import System (system, ExitCode(ExitSuccess)) import Posix(executeFile)
myconfig_file = "/tmp/config"
phaseII_var = "/tmp/Config.hs" phaseII_const = "/tmp/a.hs" phaseII_eval = "ghc --make " phaseII_result = "/tmp/a.out"
nl = "\n"
writeConfig :: Int -> IO () writeConfig num = do writeFile phaseII_var $ concat ["module Config (config_item) where", nl, "config_item =", show num, nl]
runSuperIO () = system (phaseII_eval ++ phaseII_const ++ " -o " ++ phaseII_result) >>= \ExitSuccess -> executeFile phaseII_result False [] Nothing
main = readFile myconfig_file >>= writeConfig . read >>= runSuperIO
The context: http://www.haskell.org/pipermail/haskell-cafe/2003-February/003912.html Furthermore, if GHCi can (after some prodding by the user) launch ghc to compile a module and then load the resulting .o file in and apply some function in thus loaded file, doesn't it feel like an eval?