Mathematica 中 Map 函数的用户定义版本是否正确?
我正在尝试在 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}
。我研究了“非原子表达”错误,但我不确定它的含义。我正在向它传递一个列表,但它正在爆炸!
I'm trying to create a user defined version of the Map[]
function in Mathematica and I'm running into a few problems.
Here is what I have so far:
map[x_, s_List] := mapAux[x, s, {}];
mapAux[x, s, {}] := Append[{}, First[s]];
mapAux[x, Rest[s], {}];
I'm trying to use it as
map[# + 1 &, {3, 6, 8}]
but this gives a mysterious error beside the output:
Rest::normal: Nonatomic expression expected at position 1 in Rest[s].
mapAux[#1 + 1 &, {3, 6, 8}, {}]
The ideal result would be {4,7,9}
. I researched the "Nonatomic expression" error and I'm not sure what it means. I'm passing a list to it, but it's just exploding!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您没有将
s
或x
作为变量传递,因此它只是看到s
(这是一个原子表达式)而不是列表。您的定义需要是mapAux[x_, s_, {}]:=...
,这将使x
和s
采用传递的参数的值。You're not passing
s
orx
as variables, so it's just seeings
(which is an atomic expression) rather than a list. You're definition needs to bemapAux[x_, s_, {}]:=...
, which will makex
ands
take the values of the passed parameters.