Bitraversable type class

Type class for traversing bifunctors. The concepts and laws are taken from https://hackage.haskell.org/package/base-4.12.0.0/docs/Data-Bitraversable.html

Simple examples of bitraversable are prod and sum. A more elaborate example is to define an a-list as:

def alist (key val : Type) := list (key × val)

Then we can use f : key io key' and g : val io val' to manipulate the alist's key and value respectively with bitraverse f g : alist key val io (alist key' val')

Main definitions

Tags

traversable bitraversable iterator functor bifunctor applicative