Quel est le point de style libre dans la Programmation Fonctionnelle?
Une phrase que j'ai remarqué récemment, c'est le concept de "gratuit" style...
Tout d'abord, il y avait cette question, et également.
Puis, j'ai découvert ici ils mentionnent "un Autre sujet qui pourrait être intéressant de discuter est les auteurs de l'aversion de point de style libre."
Ce qui est "gratuit" style? Quelqu'un peut-il donner une explication concise? A-t-elle quelque chose à voir avec "automatique" nourrissage?
Pour avoir une idée de mon niveau, j'ai enseigné moi-même Régime, et ont écrit un simple interpréteur Scheme... je comprends ce qu'est "implicite" de nourrissage est, mais je ne sais pas tout Haskell ou ML.
- Juste une remarque: pour voir pourquoi il est appelé pointfree visitez le site Pointfree/Mais pointfree a le plus de points! au HaskellWiki.
Vous devez vous connecter pour publier un commentaire.
Il suffit de regarder la Article de Wikipedia pour obtenir votre définition:
Haskell exemple:
Classique (vous spécifiez explicitement les différents arguments):
Point-libre (
sum
n'a pas explicite des arguments - c'est juste une fois avec+
à partir de 0):Ou encore plus simple: au Lieu de
g(x) = f(x)
, vous pouvez simplement écrireg = f
.Donc: oui, Il est étroitement lié à lancer (ou des opérations comme la composition de fonctions).
sum (x:xs) ...
au lieu desum sum (x:xs) ...
?Point-style libre signifie que les arguments de la fonction définie ne sont pas mentionnés explicitement, que la fonction est définie par la fonction de composition.
Si vous avez deux fonctions, comme
et si vous voulez combiner ces deux fonctions qui calcule
x*x+1
, vous pouvez le définir "point-plein", comme ceci:Le point sans alternative serait de ne pas parler de l'argument
x
:Un échantillon de JavaScript:
Référence
Point de style libre signifie que le code n'est pas le mentionner explicitement les arguments, même s'ils existent et sont utilisés.
Cela fonctionne en Haskell, car de la façon dont les fonctions de travail.
Par exemple:
retourne une fonction qui prend un argument, donc il n'y a pas de raison explicite de type de l'argument, sauf si vous voulez juste trop.
myShow = show
. Il n'y a plus à ce sujet sur le Haskell wikiVoici un exemple de texte dactylographié, sans aucune autre bibliothèque:
Vous pouvez voir le point-libre le style est plus "fluent" et plus facile à lire.
this.moreThan(10)
n'est pas un nom de fonction, c'est un curry de fonction ainsi que d'une fonction qui va implicitement (donc gratuit) prendre untransaction
comme entrée.