fonctionnelle! = Fonction, et pour le compte rendu, je prétendront qu'une méthode! = Fonction ...
Java est un statiquement typé, langage orienté objet. Java a également maintenu une pureté relative de cette manière mais ce n'est pas du tout près d'un langage fonctionnel.
S'il est vrai que vous pouvez imiter le comportement de la programmation fonctionnelle avec une programmation impérative, vous n'obtiendrez jamais cette syntaxe ordonnée que vous voudrez avoir pour le lambda-calcul. D'une certaine manière, si la langue ne supporte pas le lambda-calcul, ce n'est pas un langage de programmation fonctionnel.
C++ a des fonctions, mais C++ a aussi des classes. C++ a donc deux types de fonctions, fonctions membres et fonctions. Quand vous dites méthode, vous voulez dire une fonction de membre. Parce que la méthode est invoquée sur une instance d'un objet. Mais quand vous parlez de méthode statique, vous voulez dire simplement fonctionner (au sens C/C++). Ceci est juste un vocabulaire pour faire référence à des éléments de votre code. Et en Java le code ne peut pas exister en dehors d'une classe, une méthode impliquerait qu'elle appartient à un certain type de classe, c'est-à-dire.Jusqu'à présent, rien de ce que j'ai dit ne concerne la programmation fonctionnelle, mais je pense que vous vous trompez.
Je vous suggère de regarder les langages de programmation fonctionnels purs tels que Haskell ou Erlang. Parce que les langages de programmation fonctionnels n'ont généralement pas de fermetures non plus. Votre affirmation selon laquelle les méthodes statiques peuvent être utilisées pour imiter les fonctions en tant qu'objets de première classe me semble vraiment bizarre. Cela ressemble plus à un langage de programmation dynamique qu'à une programmation fonctionnelle.
Je pense que vous confondez fonctionnel avec procédural. Une erreur commune –
Java n'a pas de fonctions anonymes, vous pouvez penser à des classes anonymes. En fait Java n'a pas de fonctions du tout ... seulement des méthodes ;-) –