GHCi: scripting and multiline input

Hi, I am attempting to mimic matlab/octave using ghci, including a facility for updateable graphs of data. 1) It would be nice to be able to load a script of commands from the prompt \begin{file} script Sine where import "hmatrix" Numeric.Vector import "plot" Graphics.Rendering.Plot let ts = linspace 1000 (0,1 :: Double) let ss = sin (15*2*pi*ts) -- 15 Hz sine wave figure1 <- display $ plot (ts,[line ss blue]) \end{file} The idea is (apart from the import commands) is each line is equivalent to an input line in ghci. Note that the last line binds a variable from an action in the top level IO monad, something not possible in a module. 2) It would be nice to have multiline inputs if the parser can tell that the input is incomplete rather than malformed. One case is an empty 'do' construct: \begin{interaction} Prelude> :load Sine Sine> :show bindings ts :: Data.Vector.Storable Double ss :: Data.Vector.Storable Double figure :: Graphics.Rendering.Plot.Figure.Figure () Sine> withFigureMVar figure1 $ do Figure a > withTitle $ do Text a > setText "15 Hz sine wave" Text a > setFontSize 16 Text a > Figure a > Sine> \end{interaction} (an empty line ends the 'do' construct and returns to next higher level). Is this a feasible addition to GHCi? This way the full power of GHCi is accessible to an interactive mathematics session rather than developing a custom interface on top of the GHC API. Vivian
participants (1)
-
Vivian McPhail