@@ -3,7 +3,8 @@ module Main where
33import Control.Monad (when )
44import GHC.Wasm.Prim
55
6- import Eval (RefRepl , eval , initDisco , loadFile )
6+ import Eval (eval , loadFile )
7+ import State
78
89{- ----------------------------------------------------------------------------
910 JavaScript Imports
@@ -52,7 +53,7 @@ foreign export javascript "setup" setup :: IO ()
5253-- | Main entrypoint.
5354setup :: IO ()
5455setup = do
55- ref <- initDisco
56+ ref <- initState
5657
5758 -- Register callback for button click.
5859 evalButton <- js_document_getElementById (toJSString " eval" )
@@ -64,25 +65,27 @@ setup = do
6465 js_addEventListener exprIn (toJSString " keyup" ) callback
6566
6667-- | Handle 'keyup'.
67- onExprKeyUp :: RefRepl -> JSVal -> IO ()
68+ onExprKeyUp :: RefState -> JSVal -> IO ()
6869onExprKeyUp ref event = do
6970 key <- js_event_key event
7071 when (fromJSString key == " Enter" ) $ handleEval ref
7172
7273-- | Handle button clicks.
73- onEvalButtonClick :: RefRepl -> JSVal -> IO ()
74+ onEvalButtonClick :: RefState -> JSVal -> IO ()
7475onEvalButtonClick ref _ = handleEval ref
7576
7677-- | Handle evaluation request.
77- handleEval :: RefRepl -> IO ()
78+ handleEval :: RefState -> IO ()
7879handleEval ref = do
7980 module_ <- fromJSString <$> js_view_state_doc_toString
8081 exprIn <- js_document_getElementById (toJSString " expr" )
8182 expr <- fromJSString <$> js_input_value exprIn
8283
8384 logHistory $ " disco> " <> expr
84- result <- loadFile ref module_
85- logHistory result
85+ mresult <- loadFile ref module_
86+ case mresult of
87+ Nothing -> pure ()
88+ Just result -> logHistory result
8689 result <- eval ref expr
8790 logHistory result
8891
0 commit comments