prism :: (b -> t) -> (s -> Either t a) -> Prism s t a b
      -- (b -> t) -> (s -> Either t a) -> (forall p. Choice p => p a b -> p s t)
prism to from = dimap from (either id to) . right
prism :: (b -> t) -> (s -> Either t a) -> Prism s t a b
prism to from = dimap from (either id to) . right
prism to from = dimap from (either id to) . right