packages feed

creatur 5.2.11 → 5.3.0

raw patch · 2 files changed

+41/−2 lines, 2 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

+ ALife.Creatur.Universe: instance (Agent a, Serialize a, SizedRecord a) => Universe (CachedUniverse a)
+ ALife.Creatur.Universe: instance Eq a => Eq (CachedUniverse a)
+ ALife.Creatur.Universe: instance Show a => Show (CachedUniverse a)
+ ALife.Creatur.Universe: mkCachedUniverse :: String -> FilePath -> Int -> Int -> CachedUniverse a

Files

creatur.cabal view
@@ -1,5 +1,5 @@ Name:              creatur-Version:           5.2.11+Version:           5.3.0 Stability:         experimental Synopsis:          Framework for artificial life experiments. Description:       A software framework for automating experiments@@ -36,7 +36,7 @@ source-repository this   type:     git   location: https://github.com/mhwombat/creatur.git-  tag:      5.2.11+  tag:      5.3.0  library   GHC-Options:      -Wall -fno-warn-orphans
src/ALife/Creatur/Universe.hs view
@@ -17,6 +17,7 @@     Universe(..),     SimpleUniverse,     mkSimpleUniverse,+    mkCachedUniverse,     -- * Clock     currentTime,     incTime,@@ -55,6 +56,7 @@ import qualified ALife.Creatur.Counter as K import qualified ALife.Creatur.Database as D import qualified ALife.Creatur.Database.FileSystem as FS+import qualified ALife.Creatur.Database.CachedFileSystem as CFS import qualified ALife.Creatur.Logger as L import ALife.Creatur.Util (stateMap, shuffle) import Control.Monad.IO.Class (liftIO)@@ -304,5 +306,42 @@   where c = K.mkPersistentCounter (dir ++ "/clock")         l = L.mkSimpleRotatingLogger (dir ++ "/log/") name rotateCount         d = FS.mkFSDatabase (dir ++ "/db")+        n = N.mkSimpleAgentNamer (name ++ "_") (dir ++ "/namer")+        cl = CL.mkPersistentChecklist (dir ++ "/todo")++data CachedUniverse a = CachedUniverse+  {+    cuClock :: K.PersistentCounter,+    cuLogger :: L.SimpleRotatingLogger,+    cuDB :: (CFS.CachedFSDatabase a),+    cuNamer :: N.SimpleAgentNamer,+    cuChecklist :: CL.PersistentChecklist+  } deriving (Show, Eq)++instance (A.Agent a, Serialize a, D.SizedRecord a)+    => Universe (CachedUniverse a) where+  type Agent (CachedUniverse a) = a+  type Clock (CachedUniverse a) = K.PersistentCounter+  clock = cuClock+  setClock u c = u { cuClock=c }+  type Logger (CachedUniverse a) = L.SimpleRotatingLogger+  logger = cuLogger+  setLogger u l = u { cuLogger=l }+  type AgentDB (CachedUniverse a) = CFS.CachedFSDatabase a+  agentDB = cuDB+  setAgentDB u d = u { cuDB=d }+  type AgentNamer (CachedUniverse a) = N.SimpleAgentNamer+  agentNamer = cuNamer+  setAgentNamer u n = u { cuNamer=n }+  type Checklist (CachedUniverse a) = CL.PersistentChecklist+  checklist = cuChecklist+  setChecklist u cl = u { cuChecklist=cl }++mkCachedUniverse :: String -> FilePath -> Int -> Int -> CachedUniverse a+mkCachedUniverse name dir rotateCount cacheSize+  = CachedUniverse c l d n cl+  where c = K.mkPersistentCounter (dir ++ "/clock")+        l = L.mkSimpleRotatingLogger (dir ++ "/log/") name rotateCount+        d = CFS.mkCachedFSDatabase (dir ++ "/db") cacheSize         n = N.mkSimpleAgentNamer (name ++ "_") (dir ++ "/namer")         cl = CL.mkPersistentChecklist (dir ++ "/todo")