--- /dev/null
+definition module IRCBot
+
+from IRC import :: IRCMessage
+from Data.Maybe import :: Maybe
+from Data.Error import :: MaybeErrorString, :: MaybeError
+
+/*
+ * Spawn an IRC Bot
+ *
+ * param: Hostname and port
+ * param: Startup commands that are sent initially. For example:
+ * [NICK "clooglebot" Nothing
+ * ,USER "cloogle" "0" "Cloogle bot"
+ * ,JOIN [("#cloogle",Nothing)]]
+ * param: Shutdown commands. For example
+ * [QUIT (Just "Bye")]
+ * param: Processing function
+ * param: command received by the server
+ * param: State
+ * param: World
+ * return: Maybe a response, the updated state and the updated world
+ * If the response is nothing the connection is closed
+ * All items in the list are sent back
+ * param: World
+ * return: Maybe the state together with the new world
+*/
+bot :: (String, Int) [IRCMessage] [IRCMessage] a (IRCMessage a *World -> (Maybe [IRCMessage], a, *World)) *World -> (MaybeErrorString a, *World)