http://foswiki.cs.uu.nl/foswiki/GenericProgramming/SYB peut être une meilleure ressource pour lire sur SYB (quelques liens sont cassés parce que certaines choses sur haskell.org
ont changé d'url, mais les autres fonctionnent).
Pour répondre de manière générale à votre question, voici un extrait de la page d'accueil :
Programmation générique par type de données
La programmation générique des types de données consiste à définir des fonctions sur la structure des types de données, plutôt que sur un type de données lui-même. De cette manière, on peut définir des fonctions qui fonctionnent pour de nombreux types de données différents.
Dans SYB, la structure des types de données n'est pas directement exposée au programmeur. Au lieu de cela, des combinateurs génériques sont utilisés pour définir les fonctions génériques. Ces combinateurs sont mis en œuvre à l'aide de fonctions fondamentales des classes Data et Typeable.