136 votes

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 aussi cette une.

Puis, j'ai découvert ici la mention de "l'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.

77voto

Dario Points 26259

Il suffit de regarder la wikipedia article pour obtenir votre définition.

Tacite de programmation (point-programmation libre) est un paradigme de programmation dans lequel la définition d'une fonction ne comprennent pas les renseignements concernant ses arguments, à l'aide combinators et la fonction de la composition [...] au lieu de variables.

Haskell-Exemple:

Classique (vous spécifiez explicitement les différents arguments)

sum (x:xs) = x + (sum xs)
sum [] = 0

Point-Libre (sum n'ont pas explicite des arguments - c'est juste une fois avec + à partir de 0)

 sum = foldr (+) 0

Ou encore plus simple: au Lieu de g(x) = f(x), vous pouvez simplement écrire g = f.

Donc: oui, Il est étroitement lié à lancer (ou des opérations comme la composition de fonctions).

49voto

sth Points 91594

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

square :: a -> a
square x = x*x

inc :: a -> a
inc x = x+1

et si vous voulez combiner ces deux fonctions qui calcule x*x+1, vous pouvez le définir "point-plein", comme ceci:

f :: a -> a
f x = inc (square x)

Le point sans alternative serait de ne pas parler de l'argument x:

f :: a -> a
f = inc . square

8voto

Rayne Points 14518

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:

myTake = take

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.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X