8
votes

Fonction d'une fonction

dire, j'ai une fonction f [a_, b_, c _] = A + B + C . Maintenant, j'ai besoin de définir une autre fonction, g [f_, d _] = f + d , où le f ici doit être remplacé par la définition de f , entraînant A + B + C + D .

Comment puis-je faire ça? J'ai essayé g [f_, d _] = F + d / .f-> Définition [f] , cependant, cela n'a pas fonctionné.


1 commentaires

Votre question semble être: "Comment définir une fonction qui prend une autre fonction comme l'un de ses arguments?"


5 Réponses :


13
votes

Eh bien, votre configuration nécessite que g soit une fonction d'A, B et C, puisque vous avez explicitement effectué F une fonction de celle-ci. Pourrait plutôt faire: xxx

out [2] = A + B + C + D

Daniel Lichtblau


0 commentaires

2
votes

La réponse de Daniel est la bonne - elle répond à quoi votre question devrait A demandé!

Mais juste pour le plaisir, voici quelque chose de plus proche de la question de votre question. p> xxx pré>

Testez-le: p>

In[6]:= ff[a_, b_] := a + b
In[7]:= DownValues[ff]
Out[7]= {HoldPattern[ff[a_,b_,c_]] :> a b c, HoldPattern[ff[a_,b_]] :> a+b}

In[8]:= g[ff, d]
During evaluation of In[8]:= More than one DownValue - using the first!
Out[8]= a b c + d


2 commentaires

BTW: dans ce qui précède, "d'abord" ne signifie pas la première définition donnée. Cela signifie le premier dans l'ordre que Mathematica les stocke.


MDR! J'écris un commentaire sur la réponse de Daniel expliquant pourquoi la question n'a aucun sens ... Je suis allé à une courte réunion et quand je suis revenu trouvé votre réponse! Vous pouvez aussi répondre de mauvaises questions! Pure génie! +1



3
votes

juste une note de côté.

Le tout ait plus de sens lorsque les deux fonctions partagent les mêmes arguments ou que les arguments de la deuxième fonction sont implicites dans la première.

Par exemple: xxx

ou quelque chose comme xxx


0 commentaires

2
votes

J'ai aussi je trouve difficile de discerner votre intention, mais c'est mon interprétation: xxx

de cette façon, g [f, x] retourne une fonction qui transmet ses arguments à f .


0 commentaires

2
votes

dans le Définiton xxx pré>

regarde A, B et C comme la première forte> forte> seconde fort> et troisième Strong> argument à l'appel de la fonction et non symboles A code>, b code> ou c code>. Semblable comme dans F: = (# 1 + # 2 + # 3) & code>, l'appel à f code> lui-même (sans arguments) ne donnera pas les résultats souhaités. P >

Peut-être que vous vouliez faire quelque chose comme ceci: p> xxx pré>

maintenant, le f code> est associé comme une somme de A , B code> et C code>, qui sont des symboles globaux et non des arguments de fonction. Ensuite, P>

f + d /. a->2x


0 commentaires