foldPats
Document nested pattern scopes
Pass the algebra as an implicit param
Use foldPats in rtraverse Match