Правильная пользовательская версия функции карты в Mathematica - PullRequest
0 голосов
/ 15 ноября 2010

Я пытаюсь создать пользовательскую версию функции Map[] в Mathematica и сталкиваюсь с несколькими проблемами.

Вот что у меня есть:

map[x_, s_List] := mapAux[x, s, {}];
mapAux[x, s, {}] :=  Append[{}, First[s]];
mapAux[x, Rest[s], {}];

Я пытаюсь использовать его как

map[# + 1 &, {3, 6, 8}]

, но это дает загадочную ошибку рядом с выводом:

 Rest::normal: Nonatomic expression expected at position 1 in Rest[s].

 mapAux[#1 + 1 &, {3, 6, 8}, {}]

Идеальным результатом будет {4,7,9}.Я исследовал ошибку «Неатомное выражение» и не уверен, что это значит.Я передаю ему список, но он просто взрывается!

1 Ответ

1 голос
/ 15 ноября 2010

Вы не передаете s или x как переменные, поэтому просто видите s (атомарное выражение), а не список. Ваше определение должно быть mapAux[x_, s_, {}]:=..., что заставит x и s принять значения переданных параметров.

...