Scheme 中的函数,用于将列表中出现的所有元素替换为另一个元素

发布于 2024-08-15 02:28:40 字数 73 浏览 4 评论 0原文

我可以从列表中删除该元素,但我不知道如何在Scheme中编写一个函数来将列表中出现的所有元素替换为另一个元素。 任何帮助将不胜感激。

I am able to delete the element from a list, but I have no idea how to write a function in Scheme to replace all occurrences of an element in a list with another element.
Any help will be appreciated.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

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

发布评论

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

评论(1

失而复得 2024-08-22 02:28:40

一个简单的版本可能是这样设计的:(

(define (replace old-element new-element list)
  ; if the list is null, just return null
  ; else if the car of the list is equal to old-element
  ;    run replace on the rest of the list, and cons new-element onto it
  ; else
  ;    run replace on the rest of the list, and cons the car onto it)

我把细节留给了你,因为你必须通过实践来学习。)

记住,在Scheme中,最自然的做事方式通常是逐个组装一个新列表从你的旧清单中删除,不要尝试一次对你的旧清单进行一点小小的改变。

请注意,您还可以使用 map 来更简洁地完成此操作。

A simple version might be designed like this:

(define (replace old-element new-element list)
  ; if the list is null, just return null
  ; else if the car of the list is equal to old-element
  ;    run replace on the rest of the list, and cons new-element onto it
  ; else
  ;    run replace on the rest of the list, and cons the car onto it)

(I left the details up to you, since you gotta learn by doing.)

Remember, in Scheme the most natural way to do things will usually be to assemble a new list piece-by-piece from your old list, not to try to make little changes one at a time to your old list.

Note that you could also use map to do this much more concisely.

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