How to map over a Pair/Tuple?
问题 In Haskell I would do join (***) . In Idris flatten (***) does not work ( (***) is complicated). 回答1: In Idris, there's no Functor / Applicative / Monad instances for r -> _ and no Arrow instance for -> , only via Morphism, so using flatten to do \f x -> f x x leads to horribly verbose code full of going from/to Morphism . You can do it, of course, I'm just not sure it's worth it... compare this: import Control.Arrow import Data.Morphisms both : (a -> b) -> (a, a) -> (b, b) both = applyMor .