programmation Existe-t-il un langage fonctionnel pour l'écosystème C++?




programmation orientée objet (8)

Je suis d'accord que je ne suis pas sûr d'un écosystème pour C ++. OCaml est très populaire pour faire de la programmation fonctionnelle en dehors de .NET. F # est également basé sur cela.

Java a Scala et .NET a F # . Ces deux langages sont très fortement intégrés dans les plates-formes Java et .NET respectives. Les classes peuvent être écrites en Scala puis étendues en Java par exemple.

Existe-t-il un langage fonctionnel équivalent interopérant fortement avec C ++?


Depuis Scala compile en bytecode Java et F # compile en .NET bytecode, fait pour fonctionner sur leurs machines virtuelles respectives. La comparaison correcte serait s'il y a un langage fonctionnel qui compile au code dépendant de la machine, prêt à fonctionner sur un ordinateur, et oui, il y en a.

Je ne pense pas que ce soit ce que vous vouliez dire, mais le meilleur que j'ai à offrir est FC ++ . Boost est une autre bibliothèque qui a beaucoup de fonctionnalités qui peuvent être reconnues comme dérivées de la programmation fonctionnelle.

Cependant, je parierais qu'il n'y a pas de programmation fonctionnelle 'réelle' C ++:


Comme cela a été dit, je ne suis pas vraiment sûr d'un «écosystème» C ++. Mais Haskell a une interface de fonction étrangère qui vous permet d'appeler les fonctions C des fonctions Haskell et Haskell de C.

Là encore, c'est C, je ne sais pas vraiment jusqu'où le FFI C ++ est ...


Le langage Felix de John Skaller est conçu pour interopérer avec C ++ et fournir le paradigme fonctionnel.

Il y a des problèmes avec cela. Les langages fonctionnels fournissent des fonctions de premier ordre qui permettent la création de fermetures: fonctions qui ont capturé et véhiculé des valeurs de l'environnement dans lequel elles ont été définies. Il est impossible de déterminer statiquement les durées de vie des valeurs (car une fermeture peut avoir une valeur sa portée) et, par conséquent, nécessite effectivement un garbage collector mais C ++ n'est pas collecté.


C ++ n'a pas d'écosystème au sens de Java ou .NET. Il n'y a pas de machine virtuelle, pas même d'environnement d'exécution, il n'y a qu'une bibliothèque standard hautement spécialisée qui, par conception, ne fonctionne pas bien dans un environnement purement fonctionnel. C ++ n'a même pas de norme ABI .

Tout bien considéré, je ne suis pas sûr de ce que vous voulez dire / espérer.


Cette question a été publiée en 2008. A titre de référence, les versions ultérieures de C ++ 11 supportent la programmation fonctionnelle. Voir une autre discussion mise à jour pour cette programmation fonctionnelle en C ++


Le langage 'D' a été conçu comme un successeur de C ++. Un sous-ensemble purement fonctionnel de D est développé par Andrei Alexandrescu pour D 2.0. Je suppose que D interagit bien avec C ++.


C ++ peut ne pas être un langage fonctionnel pur, mais certaines parties de STL sont certainement fonctionnelles.

Voir la FAQ de Bjarne Stroustrup (l'inventeur du c ++)







functional-programming