rro ao gerar variáveis localizadas (como constante

A mensagem de uso paraSet nos lembra que várias tarefas podem ser feitas facilmente em duas listas, sem ter que separar nada. Por exemplo

Remove[x1, x2, y1, y2, z1, z2];
{x1, x2} = {a, b}

Executa a tarefa e retorna:

{a, b}

Thread, comumente usado para gerar listas de regras, também pode ser chamado explicitamente para obter o mesmo resultado:

Thread[{y1, y2} = {a, b}]
Thread[{z1, z2} -> {a, b}]

Gives:

{a, b}
{z1 -> a, z2 -> b}

No entanto, empregar essa abordagem para gerar constantes localizadas gera um erro. Considere esta função de exemplo trivial:

Remove[f];
f[x_] :=
 With[{{x1, x2} = {a, b}},
  x + x1 + x2
  ]
f[z]

Aqui está a mensagem de erro:

With::lvset: "Local variable specification {{x1,x2}={a,b}} contains 
{x1,x2}={a,b}, which is an assignment to {x1,x2}; only assignments 
to symbols are allowed."

A documentação da mensagem de erro ref/message/With/lvw), diz na seção "Mais informações" que "Esta mensagem é gerada quando o primeiro elemento em Com não é uma lista de atribuições para símbolos. "Dada essa explicação, entendo a mecânica do motivo pelo qual minha tarefa falhou. Mesmo assim, estou intrigado e imaginando se essa é uma restrição necessária do WRI ou se há uma pequena supervisão de projeto que deve ser relatad

Então, aqui está a minha pergunta:

Alguém pode lançar alguma luz sobre esse comportamento e / ou oferecer uma solução alternativ Eu experimentei tentando forçarEvaluation, sem sorte, e não tenho certeza do que mais tenta

questionAnswers(4)

yourAnswerToTheQuestion