From 587cbadb3e6388c29454ab41c120757f108918fa Mon Sep 17 00:00:00 2001 From: sanine Date: Wed, 29 Nov 2023 20:48:46 -0600 Subject: implement updateLattice --- src/Lattice.hs | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 src/Lattice.hs (limited to 'src') diff --git a/src/Lattice.hs b/src/Lattice.hs new file mode 100644 index 0000000..b69aa41 --- /dev/null +++ b/src/Lattice.hs @@ -0,0 +1,23 @@ +module Lattice + ( LatticeCell (..) + , Lattice + , LatticeRule + , updateLattice + ) where + + +data LatticeCell a b = LatticeCell { kind :: a, flags :: b } deriving (Show, Eq) +type Lattice a b = [[LatticeCell a b]] +type LatticeRule a b = Lattice a b -> Int -> Int -> LatticeCell a b + + +updateLattice :: (Enum a) => Lattice a b -> [LatticeRule a b] -> Lattice a b +updateLattice lattice rules = + let + mapRow = \(row, y) -> map + (\((LatticeCell k _), x) -> + let rule = rules !! (fromEnum k) + in rule lattice x y + ) + (zip row [0..]) + in map mapRow (zip lattice [0..]) -- cgit v1.2.1