|
|
1
4
您发现最初的问题是试图用Lisp编写C语义。尝试用python编写方案语义不是在重复错误吗?我总是试图将语言X作为一种范式来学习,并以最X化的方式写作。 如果这是一个你知道要迁移的商业应用程序,这可能是合理的,但否则我一开始就只会把它写在scheme中。 |
|
|
2
2
大约一年前,我用Lisp编写了一个8谜题求解器。我刚刚使用了一个由3个列表组成的列表,每个子列表都有3个元素是数字。它不是恒定的时间,但它是便携式的。 不管怎样,如果你真的有兴趣在功能上做到这一点(Scheme不要求你这样做),最简单的方法是创建一些辅助函数,这些函数在给定行/col的情况下会得到一个特定的值,并在给定行/col的情况下“设置”一个值。set操作将基于旧状态构造新状态,而不是修改原始数据结构。 然后,您可以根据这些get和set操作编写交换操作。以下是我一年前在Common Lisp中写的内容,但它很容易转换为Scheme:
|
|
|
3
1
这里有一种实现方法。使用一个将应用适当映射的函数重新创建列表。
你甚至可以更进一步,使函数成为实际的接口,其中每个交换只返回一个函数,该函数在传递给下面的函数之前进行适当的转换。性能不是特别好,但这是一种相当简单的函数式方法,省去了讨厌的可变数据结构:
|
|
|
4
0
太棒了,谢谢你的lisp代码。我需要研究一下,以确保我得到它。 至于第一个答案,我第一次用lisp“写c”,因为这是我知道如何编程的唯一方法,我不知道为什么有人会使用lisp。这一次,我一直在玩scheme,但想使用python,所以如果我被困在某件事上,我可以“作弊”并使用python风格的东西,然后在等待usenet答案的同时,继续解决问题的下一部分。 |
|
|
David J. · 这个基本的scheme函数有什么问题 4 年前 |
|
|
Asher · 如何使用DrRacket遵循简单方案手册 8 年前 |
|
|
Flux · 如何从MIT方案访问环境变量? 8 年前 |
|
|
Adam Morad · 方案反转值 8 年前 |
|
|
Adam Morad · 方案更改树值 8 年前 |
|
|
lightning_missile · 词法范围和共享对象 8 年前 |