¿Usa una variable para representar otra variable?

Oct 15 2020

Estoy tratando de crear una lista de funciones reemplazando variables en una plantilla. Probé esto:

In[1]:= Table[Function[{x,y}, (x + y) v], {v, {x,y}}]
Out[1]= {Function[{x, y}, (x + y) v], Function[{x, y}, (x + y) v]}

Pero estas funciones tienen ven sí. Esperaba obtener:

{Function[{x, y}, (x + y) x], Function[{x, y}, (x + y) y]}

Pensé que esto funcionaría porque puedo hacer algo similar con Solve:

In[2]:= Table[Solve[(x + y) v == 1 && x == y], {v, {x, y}}]
Out[2]= {{{x -> -(1/Sqrt[2]), y -> -(1/Sqrt[2])}, …

Esto es equivalente a:

In[3]:= {Solve[(x + y) x == 1 && x == y], Solve[(x + y) y == 1 && x == y]}
Out[3]= {{{x -> -(1/Sqrt[2]), y -> -(1/Sqrt[2])}, …

Parece que está reemplazando vcon x/ yen el Solveejemplo, pero no en el Functionejemplo. Sustituyendo Function[{x,y}, (x + y) Evaluate[v]]para Function[{x,y}, (x + y) v]no ayuda. ¿Que está pasando aqui? ¿Cómo puedo generar una lista de funciones similares?

Respuestas

1 cvgmt Oct 15 2020 at 10:37

La pregunta es similar a cómo construir una serie de funciones puras.

Function /@ Table[(Slot[1] + Slot[2]) v, {v, {Slot[1], Slot[2]}}]

Algunos códigos similares a @BobHanlon en el comentario son

Outer[Function[{x, y}, (x + y) #] &, {x, y}]