
On Sat, Feb 20, 2010 at 1:44 PM, Jon Harrop
On Saturday 20 February 2010 16:33:30 Tom Tobin wrote:
I just hit C-c C-r in my Haskell source file's buffer to get it reloaded in the inferior ghci shell.
I think it's best to think of the source file as your scratchpad for editing, with the "main" function changed as you go along to show relevant output for testing, and the inferior ghci buffer as just an "output window" of sorts. It's not the same as writing code directly shell, but I actually prefer it this way for all languages now, not just Haskell -- particularly since it's much nicer editing code in a proper editor vs. in a shell.
I see. What happens if your program is producing non-trivial output that takes a long time to compute? How do you get around complete recomputation at the evaluation of every new expression?
Hm, I'm not sure. I do seem to lose any local "let" bindings I do in the ghci window when I reload, and the manual for ghci doesn't seem to offer any way to save values between reloads [1]. I know you can avoid that in other languages' shells (e.g., Python). One workaround I can think of is to use the "binary" package to save intermediate computations out to disk, but that seems somewhat cumbersome when you're trying to quickly prototype your code. [1] http://www.haskell.org/ghc/docs/latest/html/users_guide/interactive-evaluati...