type Pos = (Int, Int) data Ant = Ant { position :: TVar Pos , direction :: TVar Int } data Cell = Cell { occupied :: TVar Bool , pheromone :: TVar Double } type Board = Array Pos Cell data World = World { board :: Board , population :: [ Ant ] }