En très gros, et pour la prog fonctionnelle pure (Haskell par exemple) : immuabilité des variables, pas de boucles, pas de 'flots' comme on les entends traditionnellement, gestion très spéciale des I/O, présence des monades et monoïdes, des lambdas pures, des fonctions curryfiées de partout, ... et plein d'autre, comme j'ai dit j'ai vraiment vu que le début.
C'est un tout qui fait qu'on résonne pas du tout de la même manière pour résoudre les problèmes, puisqu'on a pas du tout les mêmes outils.