blob: ee11e927b204bdaa5a3e28a96a9344b45a0d3724 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
module Main where
import Control.Concurrent.MVar
import Data.Text (Text)
import qualified Data.Text as T
import Ghci
import IRC
runInGhci :: Ghci -> Text -> IO (Ghci, [Text])
runInGhci ghci message = do
(ghci', output) <- runStmtClever ghci (T.unpack message)
case output of
Error "" -> return (ghci', [T.pack "Error?"])
Error err -> return (ghci', [T.pack err])
Ignored -> return (ghci', [])
Return "" -> return (ghci', [T.pack "<no output>"])
Return s -> return (ghci', [T.pack s])
main :: IO ()
main = do
ghci0 <- makeGhci
ghcivar <- newMVar ghci0
connectIRC
(\t -> T.take 2 t == T.pack "% ")
(\recvmsg -> do
ghci <- takeMVar ghcivar
(ghci', msgs) <- runInGhci ghci (T.drop 2 recvmsg)
putMVar ghcivar ghci'
return msgs)
-- let loop :: Ghci -> IO ()
-- loop ghci = do
-- line <- getLine
-- (ghci', moutput) <- runStmtClever ghci line
-- case moutput of
-- Just output -> putStrLn $ "output = <" ++ output ++ ">"
-- Nothing -> putStrLn "oops"
-- loop ghci'
-- makeGhci >>= loop
|