我正在尝试在Mathematica中创建用户定义的Map[]
函数版本,但我遇到了一些问题。
这是我到目前为止所做的:
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}
。我研究了“非原子表达式”错误,我不确定它的含义。我正在通过一个清单,但它只是在爆炸!
答案 0 :(得分:1)
您没有将s
或x
作为变量传递,因此它只是看到s
(这是一个原子表达式)而不是列表。您的定义必须为mapAux[x_, s_, {}]:=...
,这将使x
和s
获取传递参数的值。