问题标签 [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 投票
1 回答
117 浏览

c - How can I print the car and cdr for the consed object in this code if they are integers?

I am trying to build a cross compiler that implements scheme in c. For this I am trying to implement the basic scheme structure using cons and lists. The code which is shown below is for cons. I am not able to access the car of a consed object when it's an integer and not another consed object.

0 投票
4 回答
1383 浏览

vector - 通过附加向量来改变方案中的向量

我不知道 Scheme 中向量的底层实现,因此不知道如何编写vector-append!

原型:

PS 首选使用向量而不是列表,因为vector-ref它是一个恒定时间操作[src]

0 投票
3 回答
5376 浏览

scheme - 如何在 Scheme 中编写 SUM 函数?

如何在方案中编写一个对嵌入列表中的数字求和的函数?

即 ((1) (2 3) (4) (5 6))

我写这个是为了总结常规列表:

但我不确定如何做嵌入式。

0 投票
1 回答
668 浏览

scheme - 在 Scheme 中生成真值表

规格如下:

一个公式是:

  • 一个真值,即要么#t#f
  • 一个变量,即p, q, r, ...
  • (not formula)
  • (and formula1 formula2)
  • (or formula1 formula2)

真值表是一组行。一行包含一个绑定(I t),其中I真值赋值,即绑定集(p t)I一定是:

  • 持续的
  • 完全的

t是由估值函数产生的V(formula, I)V定义为:

  • V(t,I) = t
  • V(p,I) = t用于(p t)绑定I
  • V((not formula), I) = (not (V (formula I)))
  • V((and formula1 formula2), I) = (and V(formula1 I) V(formula2 I))
  • V(( or formula1 formula2), I) = (or V(formula1 I) V( formula2 I))

为了在 Scheme 中实现真值表,可以遵循什么程序?请注意,公式中可能有子公式。

0 投票
1 回答
263 浏览

random - random integer in scheme

In my OO World, I have an instance of "weapon" class called "max-damage". I asked to create a random number for a variable called "damage".

It says: The amount of "damage" suffered should be a random integer no more than the "max-damage", and at least 1.

I need some help to create that random integer, thanks!

PS: I can't ask more questions, in order to ask this question, I have changed the previous one, sorry..

0 投票
2 回答
1190 浏览

scheme - 使用 map、filter 或 fold-right 的字符串列表中的长度列表

你会得到一个字符串列表。

生成一个过程,以便将此过程应用于此类列表将导致输入中每个字符串的长度列表。

使用mapfilterfold-right

我陷入了以下代码中,我不明白如何使用filter.

0 投票
4 回答
5852 浏览

scheme - 方案中嵌套定义的体面方式

我想foo使用一个辅助函数来定义一个常量,比如bar. 我想隐藏bar在 的定义中foo,所以我提供了以下代码:

然而,这个定义在许多方案实现(mit-scheme、racket、guile 等)中会导致语法错误。

我有三种解决方法,但似乎都不令人满意:

foo1使用 lambda 来创建编写辅助定义的环境,括号似乎有点令人困惑。

foo2使用 let 表达式,但我不能再使用语法糖(define (f n) ...)=>(define f (lambda (n) ...))

foo3与原始值相比,需要较少的修改,但每次我想要这个值时,我都必须重新调用(foo3)并重新计算。

我的问题是:

  1. 我认为这种嵌套定义是有道理的,但为什么会被认为是语法错误呢?
  2. 有什么体面的方法来写 的定义foo吗?
0 投票
1 回答
82 浏览

mit-scheme - 保留过程中定义的变量?

我写了一个程序(do-test)。由于测试可能对变量有一些影响env,我env在里面定义do-test了希望env程序不会携带它,所以每次运行它,我都会得到一个新的环境来工作。令我惊讶的是,我的测试程序居然携带了以前的env. 请找到以下代码:

我尝试使用 mit-scheme / guile / codepad.org 运行此代码,所有这些都告诉我运行(do-test)两次会产生不同的结果。

但是,如果我将行更改(define env '(1))(define env (list 1)),我会得到预期的结果。(您可以在 codepad.org 中找到更改前后的代码

据我所知,'(1)应该(list 1)是相同的,除了第二个将调用过程list

我想知道为什么会发生这种情况以及如何防止程序重用以前的值?

0 投票
1 回答
150 浏览

emacs - 键绑定在 emacs 方案模式下不起作用

我正在按照此处的 emacs lisp 界面指南进行操作。

C-c q应该退出方案模式。但是,这显示C-c q is undefined错误。(exit)在 REPL 上键入可以正常工作。为什么这个键没有绑定在我的 emacs 中?

0 投票
1 回答
1508 浏览

emacs - 在 emacs 的缓冲区中评估 mit-scheme 代码?

M-x eval-buffer评估缓冲区中的 lisp 代码。如何评估写在缓冲区中的 mit-scheme 代码?