implementation des fonctions principal, version fonctionnel