在Mathematica中更正用户定义的Map函数版本?

时间:2010-11-15 05:49:01

标签: functional-programming wolfram-mathematica

我正在尝试在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}。我研究了“非原子表达式”错误,我不确定它的含义。我正在通过一个清单,但它只是在爆炸!

1 个答案:

答案 0 :(得分:1)

您没有将sx作为变量传递,因此它只是看到s(这是一个原子表达式)而不是列表。您的定义必须为mapAux[x_, s_, {}]:=...,这将使xs获取传递参数的值。