A Bifunctor is very similar to a Functor, which you are hopefully already familiar with.
A Functor is a ubiquitous typeclass involving type constructors of kind * → *, which is another way of saying types that have a single type variable.
Simple call-by-need (i.
scalaz contains a way to simulate something similar to a Haskell newtype, where we can take an existing type, and create a new type from it, and allow us to create new typeclass instances for our newly created type to get different behaviors.
Examples showing the use of Unapply to reduce the need for type annotations
Character/Line/Word Count from "The Essense of the Iterator Pattern".