首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >方案R5RS:按引用传递

方案R5RS:按引用传递
EN

Stack Overflow用户
提问于 2010-12-05 05:05:30
回答 2查看 1.2K关注 0票数 3

我正在尝试模仿方案中的堆栈。我使用的是DrScheme,并选择了R5RS语言。我需要创建弹出、推送和窥视的函数。但是我很难弄清楚如何通过引用来传递。我读过一些关于not的信息,但R5RS不支持它们。有没有其他方法可以通过引用传递?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-12-05 05:11:24

Scheme鼓励您以函数式的方式思考,而不是像在命令式语言中那样“通过引用”进行传递。例如,这意味着您的push操作需要两个参数:

  • a stack
  • a new element

并返回一个新堆栈,该堆栈包含与现有堆栈的其余部分组合的新元素。类似地,pop操作将获取一个堆栈,并返回一个没有顶部元素的堆栈,而peek将返回顶部元素的值。

事实证明,Scheme中的列表与堆栈的工作方式几乎完全相同。以下映射将帮助您入门:

  • push - cons
  • pop - rest
  • peek - first
票数 0
EN

Stack Overflow用户

发布于 2010-12-30 08:44:12

简而言之:不要使用r5rs;只使用本地语言。在当前版本的DrRacket中,这种语言被称为“球拍”。这是一个使用盒子的程序:

代码语言:javascript
复制
#lang racket 

(define b (box 234))

(set-box! b 333)

(unbox b)

Greg的答案比我的更纯粹的函数式,但如果认为可变结构在DrRacket (nee DrScheme)中不可用,那就大错特错了。

最后,您误用了术语“通过引用调用”。盒子只是一种可变结构和一种按值调用的语言(如球拍、r5rs、java等)。可以很好地改变这些结构。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4355827

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档