packages feed

esotericbot 0.0.4 → 0.0.5

raw patch · 3 files changed

+34/−36 lines, 3 filesdep +fgldep −time

Dependencies added: fgl

Dependencies removed: time

Files

Esotericbot/Chanop.hs view
@@ -3,7 +3,6 @@  import Data.Attoparsec import Data.List.Stream as L-import Data.Time import Data.Map as M import Data.ByteString.Unsafe 
esotericbot.cabal view
@@ -1,5 +1,5 @@ Name:			esotericbot-Version:		0.0.4+Version:		0.0.5 License:		BSD3 License-File:		License Author:			John Morrice <spoon@killersmurf.com>@@ -59,7 +59,7 @@  Homepage:		http://www.killersmurf.com/projects/esotericbot -Build-Depends:		base , bytestring , mtl , attoparsec , network , stream-fusion , stm , containers==0.2.0.0 , time , tuple , unix , directory +Build-Depends:		base , bytestring , mtl , attoparsec , network , stream-fusion , stm , containers==0.2.0.0 , tuple , unix , directory , fgl  Cabal-Version:		>= 1.6 Other-Modules:		Esotericbot.BSH            		Esotericbot.BSUtils 
hs_plugins/SK.hs view
@@ -1,14 +1,13 @@-{-# OPTIONS -XScopedTypeVariables #-}- import Text.ParserCombinators.Parsec  import System.Environment -import Data.List+import Data.List.Stream as L import Data.Maybe import Data.Graph.Inductive import qualified Data.Foldable as F +import Control.Monad.Stream as C import Control.Monad.State import Control.Arrow @@ -30,7 +29,7 @@  instance Show SKstr where    show ( SKstr sks ) =-      "(" ++ ( concat $ map show sks ) ++ ")"+      "(" L.++ ( L.concat $ L.map show sks ) L.++ ")"    show ( ASK sk ) =       show sk @@ -60,11 +59,11 @@             [ skstr ]  simplify ( SKstr sks ) =-   if length sks == 1+   if L.length sks == 1       then-         simplify $ head sks+         simplify $ L.head sks       else-         SKstr $ map simplify sks+         SKstr $ L.map simplify sks simplify x =    x  @@ -73,9 +72,9 @@    maybe next          ( \ ( sk , p ) -> do             input <- suck_input sk p [ ]-            if length input >= suck_level sk+            if L.length input >= suck_level sk                then do-                  sub first red ( snd $ head p , snd $ head $ tail p ) sk input+                  sub first red ( snd $ L.head p , snd $ L.head $ L.tail p ) sk input                   eval False red n False                else                   next@@ -96,7 +95,7 @@           ( x , _ ) <- valueOf a           case x of              App ->-                putGr $ insEdges ( inn oldgr n ++ ( mkEdgesFrom n $ out oldgr a ) ) $ insNode ( n , x ) $ delNode n g+                putGr $ insEdges ( inn oldgr n L.++ ( mkEdgesFrom n $ out oldgr a ) ) $ insNode ( n , x ) $ delNode n g              _ ->                 putGr $ insEdges ( inn oldgr n ) $ insNode ( n , x ) $ delNode n g    case sk of@@ -143,7 +142,7 @@             _ ->                return ( )    where-   mkEdgesFrom n es = map ( \ ( _ , to , v ) -> ( n , to , v ) ) es +   mkEdgesFrom n es = L.map ( \ ( _ , to , v ) -> ( n , to , v ) ) es   cloneNode from to = do    gr <- getGr@@ -156,21 +155,21 @@    case skstr of       SKstr sks -> do          putGr $ insNode ( n , App ) gr -         mapM_ ( joinToNode n ) sks +         C.mapM_ ( joinToNode n ) sks        ASK x ->          putGr $ insNode ( n , x ) gr    where    joinToNode n sk = do       gr <- getGr       ( _ , seq ) <- valueOf n-      let newEdge = if null seq+      let newEdge = if L.null seq                        then 0 -                       else fst ( maximum seq ) + 1-          newNode = head $ newNodes 1 gr+                       else fst ( L.maximum seq ) + 1+          newNode = L.head $ newNodes 1 gr       case sk of          SKstr sks -> do             putGr $ insEdge ( n , newNode , newEdge ) $ insNode ( newNode , App ) gr-            mapM_ ( joinToNode newNode ) sks+            C.mapM_ ( joinToNode newNode ) sks          ASK x -> do             putGr $ insEdge ( n , newNode , newEdge ) $ insNode ( newNode , x ) gr @@ -178,7 +177,7 @@    ( sk , seq ) <- valueOf n    case sk of       App -> do-         linkedVals <- mapM node_to_str $ map snd seq+         linkedVals <- C.mapM node_to_str $ L.map snd seq          return $ SKstr linkedVals       _ ->          return $ ASK sk@@ -189,19 +188,19 @@    in    case sk of       App ->-         foldr cleanupNode withoutn $ map snd seq+         L.foldr cleanupNode withoutn $ L.map snd seq       _ ->          withoutn                           sk_panic msg =-   error $ unlines [ "SK panic!  The possible happened!!!1"+   error $ L.unlines [ "SK panic!  The possible happened!!!1"                    , msg                    ]  valueOf a = do    gr <- getGr-   maybe ( sk_panic $ "Lookup for node " ++ show a ++ " failed!" )+   maybe ( sk_panic $ "Lookup for node " L.++ show a L.++ " failed!" )          ( \ ( _ , _ , sk , sks ) -> return ( sk , sort sks ) )          ( fst $ match a gr )    @@ -211,7 +210,7 @@       then do          ms <- suck_one p          maybe ( return sucked ) -               ( \ ( newp , s ) -> suck_input sk newp $ sucked ++ [ s ] )+               ( \ ( newp , s ) -> suck_input sk newp $ sucked L.++ [ s ] )                ms       else          return sucked@@ -238,32 +237,32 @@  find_term n = do    terms <- first_terms ( Nothing , 0 ) [ ]-   if length terms > n+   if L.length terms > n       then-         return $ Just $ terms !! n+         return $ Just $ terms L.!! n       else          return Nothing  first_terms :: ( Maybe Int , Int ) -> [ ( Maybe Int , Int ) ] -> SKM [ ( SK , [ ( Maybe Int , Int ) ] ) ] first_terms addr@( maybe_edge , n ) path = do    ( sk , sequence ) <- valueOf n    -   skterm ( if null sequence+   skterm ( if L.null sequence                then                   return [ ]                 else do-                  ( nVal , _ ) <- valueOf $ snd $ head sequence+                  ( nVal , _ ) <- valueOf $ snd $ L.head sequence                   skterm ( do-                            let tovisit = map ( first Just ) sequence-                            ts <- mapM ( flip first_terms ( addr : path ) ) tovisit-                            let just_ts = concat ts-                            if null just_ts+                            let tovisit = L.map ( first Just ) sequence+                            ts <- C.mapM ( flip first_terms ( addr : path ) ) tovisit+                            let just_ts = L.concat ts+                            if L.null just_ts                                then                                   return [ ]                                else                                   return just_ts                          )                          ( const $ do -                            return [ ( nVal , ( first Just $ head sequence ) : addr : path ) ] +                            return [ ( nVal , ( first Just $ L.head sequence ) : addr : path ) ]                           )                          nVal           )@@ -307,7 +306,7 @@   could_suck_more sk sucked =-   if length sucked >= suck_level sk+   if L.length sucked >= suck_level sk       then          False                    else@@ -315,7 +314,7 @@ main = do    prog <- getContents    args <- getArgs-   exec_sk ( not $ null args ) prog+   exec_sk ( not $ L.null args ) prog  exec_sk red skprog = do    ( _ , skgr ) <- parse_sk skprog@@ -324,7 +323,7 @@   output_sk_strs :: [ SKstr] -> IO ( ) output_sk_strs sk_strs = do-   putStrLn $ concat $ map show sk_strs+   putStrLn $ L.concat $ L.map show sk_strs   parse_sk sk = do    name <- getProgName