never executed always true always false
1 module HelVM.HelMA.Automata.Piet.Types.Program
2 ( Program (..)
3 , image
4 , isBlocked
5 , labelling
6 ) where
7
8 import HelVM.HelMA.Automata.Piet.Types.Color
9 import HelVM.HelMA.Automata.Piet.Types.Coordinates
10 import HelVM.HelMA.Automata.Piet.Types.Image
11 import HelVM.HelMA.Automata.Piet.Types.Labelling
12
13 import Lens.Micro ( (^.) )
14 import Lens.Micro.TH ( makeLenses )
15
16 data Program
17 = Program
18 { _image :: Image Color
19 , _labelling :: Labelling
20 }
21 deriving stock (Show)
22
23 makeLenses ''Program
24
25 isBlocked ∷ Coordinates → Program → Bool
26 isBlocked pos p = not (inRangeImage pos $ p ^. image) || (Black == pixelImage pos (p ^. image))