Hi all,
I'm curious as to how one would go about debugging the following program:

hello :: String

hello = "Hello"

world :: String
world = "World"

number :: Int
number = 1

helloWorld :: String
helloWorld = hello ++ " " ++ world

-- This fails!
bad :: String
bad = hello ++ number


Predictably once I load this program into ghci I get the following error:
[1 of 1] Compiling Main             ( TestCode.hs, interpreted )

TestCode.hs:14:15:
    Couldn't match expected type `[Char]' against inferred type `Int'
    In the second argument of `(++)', namely `number'
    In the expression: hello ++ number
    In the definition of `bad': bad = hello ++ number
Failed, modules loaded: none.

At this point what I want to do is to query the output type of the different functions like so:
> :t hello
but GHCI won't let me because the program hasn't been loaded.

I would then have to comment out 'bad', reload the program and query output types to my hearts content. This is fine for a small program, but when I have functions are downriver from 'bad', it gets extremely cumbersome. Is there a way to load a file such that functions that compile stay loaded in the interpreter even if something else fails?

Thanks ...
-deech