summaryrefslogtreecommitdiff
path: root/lambda-calcul/haskell/src/Minilang/REPL
diff options
context:
space:
mode:
authorArnaud Bailly <arnaud@pankzsoft.com>2025-11-04 08:09:35 +0100
committerArnaud Bailly <arnaud@pankzsoft.com>2025-11-04 08:09:35 +0100
commit51194425997225de7b7ca83e26b76b9a82f0e10d (patch)
tree7faf74f783ea4ddf2e08fe6be3b536e6e7a8500f /lambda-calcul/haskell/src/Minilang/REPL
parent46d312450863eb8eb82fd8c33f7f80705de52cdb (diff)
downloadlambda-nantes-51194425997225de7b7ca83e26b76b9a82f0e10d.tar.gz
Scaffold RESTish API for challenge
Diffstat (limited to 'lambda-calcul/haskell/src/Minilang/REPL')
-rw-r--r--lambda-calcul/haskell/src/Minilang/REPL/Net.hs29
1 files changed, 19 insertions, 10 deletions
diff --git a/lambda-calcul/haskell/src/Minilang/REPL/Net.hs b/lambda-calcul/haskell/src/Minilang/REPL/Net.hs
index 43d2560..a067a15 100644
--- a/lambda-calcul/haskell/src/Minilang/REPL/Net.hs
+++ b/lambda-calcul/haskell/src/Minilang/REPL/Net.hs
@@ -5,8 +5,15 @@ module Minilang.REPL.Net where
import Control.Concurrent.STM (atomically)
import Control.Concurrent.STM.TVar
-import Control.Monad.Catch
+ ( newTVarIO, readTVarIO, writeTVar, TVar )
+import Control.Monad.Catch ( MonadThrow(..), MonadCatch(..) )
import Control.Monad.State
+ ( MonadIO(..),
+ MonadTrans(..),
+ MonadState,
+ StateT(StateT),
+ evalStateT,
+ gets )
import Data.Aeson
( ToJSON,
eitherDecode,
@@ -17,22 +24,24 @@ import Data.Aeson
import Data.ByteString (ByteString)
import qualified Data.ByteString.Lazy as LBS
import Data.Either (fromRight)
-import Data.Map as Map
-import Data.Serialize hiding (encode)
-import Data.Text (Text, pack, unpack)
+import Data.Map as Map ( Map )
+import Data.Serialize
+ ( getLazyByteString,
+ getWord64be,
+ putLazyByteString,
+ putWord64be,
+ Serialize(..) )
+import Data.Text (Text)
import Data.Text.Encoding (decodeUtf8With)
import Data.Text.Encoding.Error (lenientDecode)
-import Minilang.Log
-import Minilang.REPL (withInputs)
+import Minilang.Log ( LoggerEnv(logInfo) )
import Minilang.REPL.Pure (render)
-import Minilang.REPL.Purer (purerREPL)
import Minilang.REPL.Run (runREPL)
import Minilang.REPL.Types
+ ( initialREPL, In(In), MonadREPL(..), Out, REPLEnv )
import Network.Wai (Application)
-import Network.Wai.Handler.WebSockets
+import Network.Wai.Handler.WebSockets ( websocketsOr )
import qualified Network.WebSockets as WS
-import System.Directory (getCurrentDirectory)
-import System.FilePath (takeFileName, (</>))
-- | Configuration of the WS server
data ServerConfig = ServerConfig