Mathematica 中 Map 函数的用户定义版本是否正确?

发布于 2024-10-02 06:43:06 字数 533 浏览 1 评论 0原文

我正在尝试在 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

祁梦 2024-10-09 06:43:06

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

You're not passing s or x as variables, so it's just seeing s (which is an atomic expression) rather than a list. You're definition needs to be mapAux[x_, s_, {}]:=..., which will make x and s take the values of the passed parameters.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文