change start signature
authorMart Lubbers <mart@martlubbers.net>
Tue, 18 Jul 2017 13:49:41 +0000 (15:49 +0200)
committerMart Lubbers <mart@martlubbers.net>
Tue, 18 Jul 2017 13:49:41 +0000 (15:49 +0200)
IRCBot.icl
cloogleirc.icl

index e736db9..df21c0a 100644 (file)
@@ -14,31 +14,31 @@ import StdBool
 
 TIMEOUT :== Just 1000
 
-bot :: (String, Int) [IRCMessage] [IRCMessage] .a (IRCMessage .a *World -> *(Maybe [IRCMessage], .a, *World)) *World -> *(Maybe String, .a, *World)
+bot :: (String, Int) [IRCMessage] [IRCMessage] .a (IRCMessage *(.a, *World) -> *(Maybe [IRCMessage], (.a, *World))) *World -> *(Maybe String, *(.a, *World))
 bot (host, port) start end state bot w
 //Lookup hostname
 # (ip, w) = lookupIPAddress host w
 | isNothing ip
-       = (Just $ "DNS lookup for " +++ host +++ " failed", state, w)
+       = (Just $ "DNS lookup for " +++ host +++ " failed", (state, w))
 //Connect
 # (rpt,chan,w) = connectTCP_MT TIMEOUT (fromJust ip, port) w
 | rpt == TR_Expired
-       = (Just $ "Connection to " +++ host +++ " timed out", state, w)
+       = (Just $ "Connection to " +++ host +++ " timed out", (state, w))
 | rpt == TR_NoSuccess
-       = (Just $ "Could not connect to " +++ host, state, w)
+       = (Just $ "Could not connect to " +++ host, (state, w))
 // Send startup commands
 # (merr, chan, w) = send (map toString start) (fromJust chan) w
-| isError merr = (Just $ fromError merr, state, w)
+| isError merr = (Just $ fromError merr, (state, w))
 //Start processing function
 # (mer, chan, state, w) = process chan "" state bot w
-| isError mer = (Just $ fromError mer, state, w)
+| isError mer = (Just $ fromError mer, (state, w))
 // Send shutdown commands
 # (merr, {rChannel,sChannel}, w) = send (map toString end) chan w
-| isError merr = (Just $ fromError merr, state, w)
+| isError merr = (Just $ fromError merr, (state, w))
 //Close channels
-= (Nothing, state, closeChannel sChannel (closeRChannel rChannel w))
+= (Nothing, (state, closeChannel sChannel (closeRChannel rChannel w)))
 
-process :: TCP_DuplexChannel String .a (IRCMessage .a *World -> (Maybe [IRCMessage], .a, *World)) *World -> (MaybeErrorString (), TCP_DuplexChannel, .a, *World)
+process :: TCP_DuplexChannel String .a (IRCMessage (.a, *World) -> (Maybe [IRCMessage], (.a, *World))) *World -> (MaybeErrorString (), TCP_DuplexChannel, (.a, *World))
 process chan acc state bot w
 //See if we have a message
 = case split "\r\n" acc of
@@ -46,21 +46,21 @@ process chan acc state bot w
        [m] 
                //Receive
                # (merr_resp, chan, w) = recv chan w
-               | isError merr_resp = (Error (fromError merr_resp), chan, state, w)
+               | isError merr_resp = (Error (fromError merr_resp), chan, (state, w))
                # (Ok mresp) = merr_resp
                | isNothing mresp = process chan acc state bot w
-               = process chan (m +++ fromJust mresp) state bot w
+               = process chan (m +++ fromJust mresp) (state, bot) w
        //We have a successfull split and therefore we process at least one message
        [m:xs]
                # acc = join "\r\n" xs
                = case parseIRCMessage $ m +++ "\r\n" of
                        (Left err) = (Error $ "IRC Parsing error: " +++ join "\n" err, chan, state, w)
                        (Right msg)
-                       # (mircc, state, w) = bot msg state w
-                       | isNothing mircc = (Ok (), chan, state, w) // Bot asks to quit
+                       # (mircc, state, w) = bot msg (state, w)
+                       | isNothing mircc = (Ok (), chan, (state, w)) // Bot asks to quit
                        //Possible send the commands
                        # (merr, chan, w) = send (map toString $ fromJust mircc) chan w
-                       | isError merr = (Error $ fromError merr, chan, state, w)
+                       | isError merr = (Error $ fromError merr, chan, (state, w))
                        //Recurse
                        = process chan acc state bot w
 
index 1801ef8..a83663b 100644 (file)
@@ -108,15 +108,15 @@ cloogle data w
                , bs_strftime :: String
                }
 
-//Start :: *World -> (MaybeErrorString (), *World)
+Start :: *World -> (Maybe String, *World)
 Start w
 # ([arg0:args], w) = getCommandLine w
 # (io, w) = stdio w
 # bs = parseCLI args 
-| isError bs = (Error $ "\n" +++ fromError bs +++ "\n", snd $ fclose io w)
+| isError bs = (Just $ "\n" +++ fromError bs +++ "\n", snd $ fclose io w)
 # (Ok bs) = bs
 # (merr, io, w) = bot (bs.bs_server, bs.bs_port) (startup bs) shutdown io (process bs.bs_strftime) w
-= (maybe (Ok ()) Error merr, snd $ fclose io w)
+= (merr, snd $ fclose io w)
        where
                parseCLI :: [String] -> MaybeErrorString BotSettings
                parseCLI [] = Ok