Bwarf, ça rejoint ce que je dis sur Smalltalk. On peut tourner les choses comme on veut (et je le dis en tant que rubyiste, hein
), c'est lui le père de toute cette lignée-là de l'OOP (à liens dynamiques, donc, et non statiques).
Après, si le type tient absolument à mettre Obj-C avant Smalltalk parce la syntaxe de Java ressemble à du C (avec ses {} partout), c'est son choix.
Pour ce qui est de Haskell, pour simplifier et parler dans les termes hipsters de nos jours, c'est du fonctionnel, donc une étape supplémentaire de l'abstraction des types apportée l'OO (sort of...).
Grosso modo, y a : inférence (optionnelle) des types, pas d'effets de bords (donc pas de mémoire à gérer, et non, un GC, ça crée vite plus de problèmes que le temps gagné face au manuel), classes de types, concision, le compilo qui génère les algos à ta place, etc, et donc encore plus de programmation générique.
Perso, ce que j'aime beaucoup avec Haskell, c'est surtout le formalisme mathématique derrière le langage (donc le style de programmation qui y met en valeur les structures de données, donc rend la chose lisible), et SURTOUT ghc. (Non seulement parce qu'il permet d'interpréter, mais surtout de compiler (sans machine virtuelle, donc), et ceci, de manière classique, i.e y a du code assembleur qui ressort (y a une option qui permet de générer du code C aussi), et tu peux donc facilement interfacer avec du C ou n'importe quel autre langage qui génère des fichiers objets !
)