I am very interested in using this with IHaskell, but don't know of something that exists already. I am currently working on using IPython widgets with IHaskell in order to create a generic "event handling" framework for any sort of displays. Code might look like this (just some initial thoughts):
-- Uses a StateT of some sort. Reruns things every time
-- a dependent value changes, and shows the updated output.
interactive $ do
-- Display a slider. The value changes every time the slider moves.
width <- slider # name "Picture Width" # range 0.1 5
-- Rerun this event every key press. It can modify the state.
onEvent (keyPress 'c') $ do
modifyState doSomething
-- Make a diagram using the current state. Rerun every time a
-- slider value changes or key press event happens.
diagram <- makeDiagram
-- Show the diagram. This is what will chance in the IHaskell display.
display diagram
I have Diagrams already working with IHaskell, and interactivity already working in another example (interactive parsers with Parsec, see error messages etc as you type), so all that remains is combining them. I'm hoping to get it working nicely sometime this summer when I have more time, but if you're interested in this approach, feel free to contact me.