I’ve started work on adding Foldable1 and Traverse1 to scalaz. Pretty similar to the semigroupoids package:
The idea is to move over the following from Foldable to Foldable1:
Those functions will then be total and won’t need to return Option. Other methods can be defined in Foldable1 (e.g. suml1, sumr1) which will only require a Semigroup instead of a Monoid.
I’m also creating Traverse1 which relaxes Traverse’s Applicative restrictions to Apply.
My incomplete changes live on my fork.