GHCi: scripting and multiline input
haskell.vivian.mcphail at gmail.com
Tue Sep 14 00:23:23 EDT 2010
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
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])
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'
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
Text a > setFontSize 16
Text a >
Figure a >
(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.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Glasgow-haskell-users