问题标签 [racket]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
10 回答
3296 浏览

lisp - 您使用过 Scheme 宏的一些事情是什么?

宏的许多示例似乎是关于隐藏 lambda,例如 CL 中的 with-open-file。我正在寻找宏的一些更奇特的用途,特别是在 PLT 方案中。我想了解何时考虑使用宏与使用函数。

0 投票
2 回答
1237 浏览

time - PLT 方案中的时间码

我想看看一个函数需要多长时间才能运行。在 PLT-Scheme 中最简单的方法是什么?理想情况下,我希望能够做这样的事情:

我是否必须使用其他语法(如(timed loopy 5000000)or (timed '(loopy 5000000)),或者它是否返回在 cons 或其他东西中花费的时间)都没有关系。

0 投票
2 回答
2216 浏览

lisp - 如何选择在 DrScheme 中使用的语言?

我最近下载了 PLT Scheme 和 DrScheme。当我打开 DrScheme 时,我被告知选择一种语言。但是,我对我的任何选项都不熟悉,并且帮助指南并没有真正将其分解以帮助我轻松选择哪个选项。

那么,首先 - DrScheme 和 PLT Scheme 真的是我学习 Lisp 和/或 Scheme 所需的工具吗?如果是这样,有哪些不同的语言以及我应该使用哪些语言?

0 投票
3 回答
1834 浏览

programming-languages - Scheme中柯里化函数的实现

当我执行以下操作时会发生什么?

我知道我可以这样做:

现在我可以使用咖喱了。我很好奇的是函数的定义。是否行

以 x 作为参数创建一个新的 lambda,然后在 1 上调用它?或者它是否比这更聪明,它只是重新使用现有的。(例如,如果我这样做(curried 0),该((func x) 1)行将等同于(curried 1)- PLAI Scheme 这样做吗?)

0 投票
1 回答
755 浏览

scheme - DrScheme 与 mzscheme:定义的处理

我的一个长期项目是完成 SICP 的所有练习。我注意到最近的练习有点奇怪。我正在测试一个霍夫曼编码树。当我在 DrScheme 中执行以下代码时,我得到了预期的结果:

但是,如果我通过调用 (load "2.67.scm") 或运行 mzscheme -f 2.67.scm 在 mzscheme 中执行相同的代码,它会报告:

我的问题是:为什么?是不是因为 mzscheme 和 drscheme 使用不同的规则来加载程序定义?程序代码如下。

0 投票
15 回答
35905 浏览

macos - OS X 的最佳方案或 LISP 实现是什么?

我正在寻找一个版本的 Scheme 甚至是 LISP,我可以用它来恢复一些丢失的 Lisp 开发技能。一些网络功能会很好,但不是必不可少的。

我看过 Plt 和 MIT 方案,虽然两者看起来都不错,但 Plt 似乎功能更丰富。我还查看了 Lisp 实现,但所有这些似乎都非常昂贵。

我喜欢免费/廉价的实现,因为这很可能只是偶尔的爱好编程。你会有什么建议?

0 投票
4 回答
2923 浏览

scheme - 在 Scheme 中分配原子列表

我正在尝试在 Macintosh 上使用 DrScheme 从“The Little Schemer”一书中学习 Scheme。它以“l 的汽车是什么,其中 l 是论点 (abc)?”之类的东西开头。

我知道这个问题的答案是,但我实际上无法弄清楚在 Dr Scheme 中输入什么来“跟随”。关于如何分配给 l 的一个简单想法,例如 > (def l ('a 'b 'c))

给我错误:“函数调用:在左括号后需要一个定义的名称或原始操作名称,但发现了别的东西”

0 投票
2 回答
965 浏览

ruby - 类似于 DrScheme 的 Ruby 文本编辑器/IDE

对于那些没有使用过 DrScheme 的人来说,窗口分为两部分:一部分是您正在编辑的文件,另一部分是交互式 shell。当我运行一个文件时,它被加载到交互环境中,所以我可以调用我定义的函数等。交互环境仍然具有文本编辑器的所有功能(语法突出显示,自动完成等......)

那么是否有一个用于 Ruby 的 IDE,它不仅执行我正在制作的脚本,而且将它加载到 irb 中,并带有所有文本编辑器的好东西?

0 投票
4 回答
2910 浏览

scheme - 为什么 Scheme 不支持一流的环境?

我一直在阅读 SICP(计算机程序的结构和解释),并且非常兴奋地发现了这种奇妙的特殊形式:“make-environment”,他们演示了将其与 eval 结合使用作为编写模块化代码的一种方式(摘录来自第 4.3 节“包”):

然后他们展示了它是如何工作的

在他们的例子中,他们接着准确地展示了我想要的用法——一种优雅的、极简主义的方式在方案中做“OO”风格......他们“cons”在一起一个“type”,这实际上是什么由“make-environment”特殊形式(即 vtable)和 arg(“状态”)返回...

我非常兴奋,因为这正是我一直在寻找的一种在 Scheme 中“按符号”进行多态调度的方法,而无需编写大量显式代码或宏。

即我想创建一个“对象”,它有两个函数,我在不同的上下文中调用它们......但我不想用“car”和“cdr”来引用它们,我想同时声明并通过它们的符号名称来评估它们。

无论如何,当我读到这篇文章时,我迫不及待地想回家试试。

想象一下,当我在 PLT 计划和 Chez 计划中遇到以下情况时,我会感到失望:

SICP 中提到的“make-environment”发生了什么?这一切看起来如此优雅,正是我想要的,但似乎任何现代 Scheme 解释器都不支持它?

理由是什么?仅仅是“make-environment”的名称不同吗?

更多信息稍后发现

我看了一下在线版本:

http://mitpress.mit.edu/sicp/full-text/book/book-ZH-28.html#%_sec_4.3

我正在读的是SICP的第一版。第二版似乎用关于非确定性编程和“amp”运算符的部分取代了对包的讨论。

0 投票
2 回答
3585 浏览

scheme - 如何在 DrScheme 中重新定义常量标识符?

我正在使用 DrScheme 编写一个 Scheme 解释器。我定义了一个读取评估打印循环,并且我正在重新定义评估过程。这在 Chez Scheme 等其他方案实现中效果很好,但我不喜欢 Chez Scheme 中的代码编辑,所以我想为此使用 DrScheme。

当我进行如下定义时: (define (eval exp env) (cond ...)) 它说:define-values: cannot change constant identifier: eval

有没有办法覆盖它并让我更改常量标识符?我宁愿不必重命名所有变量来解决这个问题。