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))