Почему в Data.Bitraversable нет обхода 1 и обхода 2?

#haskell

Вопрос:

Data.Bifunctor имеет first и second для сопоставления аргументов первого и второго типов.

Почему нет Data.Bitraversable аналогичного traverseFirst и traverseSecond ?

Комментарии:

1. Тебе придется спросить Эда Кметта. Но вы можете просто написать traverseSecond = bitraverse pure и traverseFirst = flip bitraverse pure .

2. Существует ли полезное разложение bitraverse на traverseFirst и traverseSecond аналогично bimap f g = first f . second g ?

3. @chepner, хорошая мысль! Я не думаю, что это так, если, конечно, вы не выкинете несколько трюков с незаконным Applicative экземпляром.