Dans un langage de programmation fonctionnel suffisamment puissant (par exemple, avec des types de données pour implémenter des fermetures ), vous pouvez éliminer toutes les utilisations d'ordre supérieur par la transformation de la défonctionnalisation . Comme cette méthode est utilisée pour compiler ce type de langage, vous pouvez raisonnablement supposer que cela n'affecte pas les performances et que dans ce paramètre, un ordre supérieur ne rend pas le langage moins puissant. Cependant, cela affecte la façon d'écrire du code.
Cependant, si le langage n'est pas assez puissant, alors oui, un ordre supérieur fournit un pouvoir expressif. Considérez le lambda-calcul: sans fonction d'ordre supérieur, il ne peut vraiment rien faire, principalement parce que les types de données les plus basiques (entiers, booléens) sont implémentés à l'aide de fonctions.
En conclusion, cela dépend vraiment de la langue.
Ci-dessus est ma réponse. Ci-dessous, un commentaire sur une hypothèse habituelle sur les langues impératives.
sur un algorithme qui sur un langage de programmation fonctionnel non paresseux a une complexité , tandis que le même algorithme en programmation impérative est Ω ( n ) . Ajouter la paresse au langage FP rendrait l'algorithme Ω ( n ) .Ω ( n logn )Ω (n )Ω ( n )
Je voudrais voir cette référence. L'hypothèse habituelle est qu'un accès à un tableau de longueur dans une RAM est au temps O ( 1 ) et l'équivalent en FP pur est au temps O ( log n ) . Ce n'est pas tout à fait vrai: le temps d'accès dans une RAM est en O ( log m ) où m est la taille de la mémoire. Bien sûr, m ≥ n . En pratique, l'accès à un élément d'un tableau est beaucoup plus rapide. Une raison serait que m est borné mais ... tout comme n !nO ( 1 )O ( logn )O ( logm )mm ≥ nmn
EDIT: merci pour le lien (le lien pour l'article sur la paresse n'est pas disponible, en voici un autre ). Comme indiqué dans les commentaires et ci-dessus dans ma réponse, le modèle de RAM est un peu injuste envers le FP pur en fournissant des recherches même lorsque la taille d'une adresse n'est pas limitée. Je n'ai pas encore compris comment fonctionne le paresseux, mais je pense qu'il est important de noter que ce n'est que pour ce problème particulier.O ( 1 )