2009-10-15 5 views
3

Dans une programmation fonctionnelle, comment appelleriez-vous ce genre d'opération?Dans une programmation fonctionnelle, comment appelleriez-vous ce genre d'opération?

function(f,vargs){ //variable count of arguments 
    return function(){ 
     return f(vargs) 
    } 
} 

Je pense que cela est Currying, mais j'avais l'impression que curryfication est le terme lorsque nous relions un seul argument pas plusieurs arguments. Ou peut-être c'est un retard, pas vraiment sûr ...

+3

Que diriez-vous de 'obfuscation'? – pavium

+0

@pavium, ouais il pourrait être un peu déroutant à première vue, mais ce n'est pas obfuscation :) –

+0

Oui, j'étais ironique. – pavium

Répondre

4

apply est le terme correct - par exemple, Python avait un équivalent apply (qui est maintenant dépréciée).

Voir également la demande partielle in Haskell ou in Javascript. Si l'application partielle utilise certains des arguments de la fonction, il s'ensuit que l'application complète, ou juste l'application, doit utiliser tous les des arguments, comme vous l'avez fait ci-dessus.

+0

Bon travail de déduction là, merci! –

4

Je pense que c'est ce qu'on appelle l'application de fonction.

rappeler que, dans un paradigme fonctionnel,

function(){ 
    return f(vargs) 
} 

étant une fonction sans argument, est à peu près l'équivalent d'une variable procédurale-programmation contenant le résultat de f(vargs).

2

Je suis d'accord que currying est l'acte d'appliquer partiellement des fonctions et renvoyer une fonction qui correspond à la signature de la fonction originale moins les arguments appliqués.

Jetez un oeil à cet article - The Art of Currying

Cela ressemble à un Higher Order function

+0

Ouais je ne suis pas sûr si c'est un argument à la fois ou non. –

+0

Je ne pense pas que cela doit être un argument pour être une fonction curry, pas tous les arguments :) –

0
function(f, args) { 
    return (
     function() { return f(vargs) } 
    ) 
} 

La fonction extérieure prend f et args, ce qu'elle retourne est une fonction anonyme qui retourne seulement f(args), où f et vargs sont des arguments de la fonction extérieure.

Dans Mathematica par exemple vous pouvez l'écrire comme F[f_, args___] := f[args]&. Étant donné que la fonction anonyme renvoyée est une fonction constante (n'acceptant aucun argument), vous pouvez également l'écrire en tant que F[f_, args___] := f[args], en omettant la dernière &.

+0

Connaissez-vous le nom utilisé dans Mathematica pour ce genre de chose? –

+0

À ma connaissance, il n'y a pas de nom standard pour toute l'opération, qui prend comme argument les arguments _f_ et _args_, et renvoie une fonction constante dont la valeur est obtenue en appliquant _f_ à _args_. –

Questions connexes