:l shell.hs :def shell (\s -> do shell s; return "") :unset +s :unset +t :shell cp A1.hs A.hs :load B -- eval something that isn't exported from B z :shell echo >> A.hs :reload -- A should be recompiled, B will be skipped. We should still have -- the full top-level scope of B available, though. This was -- nearly broken in GHC 6.4 z