|
|
1
4
(根据OP的评论进行了更新;请参阅原始答案下面的新部分。) 使用堆栈的列表并使其成为循环变量之一。例如。
然后,每当你想在下一次迭代中更改堆栈上的内容时,基本上就是这样做。
还要注意,如果需要按顺序进行一系列“更新”,通常可以使用
针对您关于循环被排除为“命令式”功能的评论:
是
你可能会记得
也可以巧妙地使用
所以这一切都可以归结为过程应用,这在scheme中是常见的。
命名
显然,这个特殊的“loopy”结构也非常适合命令式编程——只需使用
如果您真的不确定是否可以使用它(或者如果您只是使用
|
|
|
2
0
我不确定我是否完全正确地理解了这一点,但这个简单的解决方案有什么问题: 第一: 你要检验你的论点是否确实是一个列表: 如果是:将函数的映射追加到尾部(map postfixer(cdr lst))的a列表中,该列表只包含头部。映射只是将后缀程序再次应用于尾部的每个序列元素。 如果不是,只返回参数不变。 在我的实现中,有三行方案:
到:
通过映射的递归不需要循环,甚至不需要尾循环,也不需要变异,并且通过应用映射来显示函数风格。除非我完全误解了你的观点,否则我不认为有必要这么复杂。 编辑:哦,现在我读,中缀,不是前缀,到后缀。好吧,除了第二个元素,而不是第一个元素外,同样的想法也适用。 |
|
|
David J. · 这个基本的scheme函数有什么问题 4 年前 |
|
|
Asher · 如何使用DrRacket遵循简单方案手册 8 年前 |
|
|
Flux · 如何从MIT方案访问环境变量? 8 年前 |
|
|
Adam Morad · 方案反转值 8 年前 |
|
|
Adam Morad · 方案更改树值 8 年前 |
|
|
lightning_missile · 词法范围和共享对象 8 年前 |