pathList :: (Bounded a, Eq a, Integral ix) => [((ix, ix), a)] -> D.Path D.V2 Double
pathList = D.Path . fmap (uncurry (flip D.at) . (p2int *** toTrail))
  where p2int = D.p2 . (fromIntegral *** fromIntegral)


-- | Same as 'pathList', but from a matrix represented as a list
-- of lists.
pathList :: (Bounded a, Eq a, Integral ix) => [((ix, ix), a)] -> D.Path D.V2 Double
pathList = D.Path . fmap (uncurry (flip D.at) . (p2int *** toTrail))
  where p2int = D.p2 . (fromIntegral *** fromIntegral)


-- | Same as 'pathList', but from a matrix represented as a list
-- of lists.
pathList = D.Path . fmap (uncurry (flip D.at) . (p2int *** toTrail))
  where p2int = D.p2 . (fromIntegral *** fromIntegral)


-- | Same as 'pathList', but from a matrix represented as a list
-- of lists.