问题标签 [mit-scheme]

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 投票
2 回答
900 浏览

scheme - 如何在 MIT Scheme 和 Windows 之间复制/粘贴文本

我想在 MIT Scheme 的 Edwin 和 Windows 之间复制/粘贴一些文本。有办法吗?

现在我在记事本中打开源代码,复制/粘贴到那里,保存并关闭,返回 Edwin 并同步。这不方便。

0 投票
3 回答
1566 浏览

scheme - 如何在 Edwin 中加载文件

这可能是一个愚蠢的问题,但我无法终生解决这个问题,也无法在网上找到回答我问题的参考资料。

我一直在使用 Edwin(这是我第一次使用 Emacs)来学习 MIT Opencourseware 6.001 课程,但我不知道如何加载文件。

启动时,我键入 Cx Cf 以创建一个新文件“test.scm”。然后我输入一些 Scheme 代码并输入 Cx Cs 来保存它。

但是,如果我关闭 Edwin,重新启动它,然后键入 Cx Cf test.scm,我只会得到一张白纸。相反,如果我键入 Mx dired,滚动到 test.scm 并按 RET,我仍然会得到一张白纸。该文件在 Windows 中占用了一些空间,所以我认为问题不是保存而是加载(特别是因为我同样无法加载麻省理工学院提供的预制 .scm 文件)

如果这很重要,我正在 Windows 7 上运行 MIT/GNU 方案...

0 投票
3 回答
6164 浏览

scheme - Guile Scheme 解释器中的奇怪乘法行为

Guile 1.8.8我在 OS X的解释器中练习 Scheme 。我注意到了一些有趣的事情。

expt是基本上做幂运算的函数expt(b,n) = b^n

如果我尝试一些输入

奇怪的部分来了:

更奇怪的是,直到n=488它停留在0

当我使用repl.it在线解释器尝试此代码时,它按预期工作。那么Guile到底有什么问题呢?

(注意:在某些方言中,remainder函数称为mod。)

0 投票
2 回答
859 浏览

scheme - 如何创建 Scheme 定义以解析复合 S 表达式并放入正常形式

给定一个 : 形式的表达式(* 3 (+ x y)),我如何评估该表达式以便将其放入表单中(+ (* 3 x) (* 3 y))?(注意:在一般情况下,3 是任何常数,“x”或“y”可以是单个变量或其他 s 表达式(例如(+ 2 x))的项。

如何编写一个 lambda 表达式,递归地评估原始表达式中的项目(原子?)并确定它们是常量还是项?如果是术语,则需要再次递归评估以确定该术语列表中每个项目的类型。

同样,对我来说,问题的症结在于定义的递归“内核”。

我显然需要一个基本案例来确定一旦我到达表达式最深处的最后一个单个原子。然后递归地“备份”工作,根据规则以适当的形式构建表达式。

来自 Java / C++ 背景,我很难理解如何在 Scheme 中从语法上做到这一点。

0 投票
1 回答
1239 浏览

scheme - 如何在 mit 方案中导入其他库?

这是一个关于如何在 mit 方案中加载依赖项的新手问题

例如,我希望使用此处定义的流库。 http://srfi.schemers.org/srfi-41/srfi-41.html

我该怎么办?它已经在那里了吗,因为它是一个 srfi?保存为文件?我如何调用这些函数?

0 投票
2 回答
2042 浏览

scheme - 方案输入端口 eof

这都是关于方案及其输入系统的,让我们开始吧,我得到了这个输入,程序必须一直读到 eof。

这就是功能

问题是,我在最终从控制台读取时遇到问题,而 letrec,我知道问题出在哪里,但我不知道如何解决它。

p>

它坚持来回读取输入,在此先感谢

0 投票
2 回答
791 浏览

scheme - 麻省理工学院计划中位数程序

您将如何在不使用 list-ref 的情况下定义一个查找列表中位数的过程?例如,(median '(1 2 2))将返回 2 并(median '(1 2 3 4 5 6))返回 3.5。您可以假设它是一个排序整数列表。

这是一个家庭作业问题,所以请不要发布实际代码。我正在寻找的只是一些提示或一些伪代码来帮助我朝着正确的方向前进。如标题中所述,我正在使用 MIT 方案。提前致谢。

0 投票
2 回答
2137 浏览

scheme - 是否可以在 mit-scheme 中实现“define-macro”

读完这一页。我发现很难记住如何define-syntax代替define-macro,所以我想define-macro在 mit-scheme 中实现(或至少找到一些等效的)。

这是我的(有问题的)实现:

REPL 抱怨道:

我是计划新手,不知道出了什么问题,有人可以帮我吗?

0 投票
2 回答
310 浏览

scheme - 为什么这会返回一个列表 '(5) 而不是数字 5?

我正在通过 SICP 工作,我正在进行的练习要求一个返回列表中最后一个元素的过程。我实现了执行last-pair此操作的过程,但我很困惑为什么它返回一个列表而不是一个数字:

当我在从 1 到 5 的整数列表上调用它时,我得到输出 '(5):

我原以为5,怎么(car (list 1 2 3 4 5))1不回来'(1)

为什么我得到'(5)而不是5


我正在使用 DrRacket 5.3.3 和 Racket Scheme。

编辑 1:MIT-Scheme 似乎没有这样做。last-pair返回5'(5)。哪个是对的?!?

编辑 2:有趣的是,在 DrRacket 中(不在 MIT-Scheme 中),如果第二行(cond ((null? (cdr alist))缩进两个空格,则在调用过程时,它返回'(5). 但是,当第二行没有缩进时,它会返回5. 这是一个故障吗?我相信 Scheme 解释器应该遵循的只是括号,对吗?

编辑 3:我开始认为这是 DrRacket 中的一个小故障。当我将过程定义放在定义窗口(通常是顶部编辑器窗格)中时,无论缩进如何,过程都将返回5. 但是,如果我在界面窗口中定义它,缩进会影响编辑 2 中所述的结果。(编辑 4)无论缩进如何,它都会返回'(5).

<用一些关于缩进差异的代码剪断了前面的部分;现在的问题是定义过程的地方,请参阅编辑 4 >

编辑4:好的,我已经简化了问题。

  • 在 MIT-Scheme 中,(last-pair (list 1 2 3 4 5))返回5,其中last-pair定义如上。不管缩进。
  • 在 DrRacket 中,当last-pair程序在定义窗口中定义时,然后我单击“运行”,(last-pair (list 1 2 3 4 5))返回5. 不管缩进。
  • 在 DrRacket 中,当last-pair程序在界面窗口(REPL)中定义时,(last-pair (list 1 2 3 4 5)) returns'(5). 不管缩进。

这是一个屏幕截图: 对于在不同窗口中定义的相同功能,Racket 给出不同的结果

0 投票
1 回答
1405 浏览

scheme - Scheme中的未绑定变量

我将它与 MIT/GNU Scheme 实现一起使用,它可以让我运行此代码并正确响​​应。不过我的问题是,一旦将用户数据放入函数中,它就不会将任何类型的信息绑定到变量。IE 在输入数据并尝试访问任何参数后,我得到以下信息: