1. 4
  1.  

  2. 2

    It uses Natural Transformation, but rather than creating a scalaz.Free it instead uses scalaz.Free.FreeC which uses the Coyoneda (which I don’t pretend to understand). The big advantage is you no longer need to provide the functor implementation.

    You completely understand it! Coyoneda gives rise to a “free functor” for every type constructor. Saying “you no longer need to provide a functor implementation” is the whole point :)