问题标签 [chicken-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 回答
304 浏览

lisp - 如何在鸡肉方案中打印用 defstruct 制作的数据结构的所有“部分”

假设我们有上面的代码:

我知道我可以使用(树高椰子)来查看椰子的高度,但是一个命令中的所有椰子信息怎么样?我还尝试了 (tree->alist 椰子) 产生: ((height . 30) (age . 5) (leaf-color . 'green)) 但我不能使用类似的东西:(for-each pp 椰子)。是否可以这样做,或者用适当的命令编写我的打印树是唯一的解决方案?

0 投票
1 回答
143 浏览

lisp - 搜索包含列表或 cons 的列表

假设我们得到了一个这样的列表(包含更多元素,但方法应该相同):

我们总是可以在现有列表中添加更多元素。这是最有效的方法,可以说编写一个获取用户名并返回姓氏的函数:

就像是 :

在这种情况下,一般做法是什么?谁能指出一个如何做的例子/链接?

0 投票
3 回答
1254 浏览

list - 一切都是计划中的清单吗?

除了“Simply Scheme”(第二版)这本书,我还在 youtube 上观看“Computer Science 61A - Lectures”。在讲座中,导师使用 Stk 解释器,但我使用的是鸡计划解释器。

在第一堂课中,他使用了“第一个”程序,如果它被称为:

它返回“h”。

在“简单方案”一书中,它有一个如何实现 first 的示例:

如果发送,我的测试和理解是一个列表。我试图了解在方案中说“一切都是列表”是否合适。更具体地说,'hello中的列表在哪里,如果有,为什么它在第一个过程中不起作用,因为它是在书中写的?

此外,如果每个实现都是用“一切都是列表”来编写的,那么为什么相同的代码在所有方案实现中都不起作用

0 投票
1 回答
57 浏览

garbage-collection - 如何获取有关堆栈限制的平台特定信息

我正在制作一个解释器,它以鸡计划的风格进行内存分配。基本思想是:

示例指令是:

我需要知道的是 STACK_LIMIT 的值应该是什么(我还需要知道堆栈是向上还是向下增长。)如何获取有关堆栈限制的平台特定信息?

0 投票
1 回答
252 浏览

java - 如何检查堆栈限制,并在 Java 中完成 Chicken Scheme 风格的递归?

考虑以下代码。这段代码几乎实现了 Chicken Scheme 风格的递归,其中大部分时间函数是直接调用的,但偶尔会有更复杂的蹦床过程。但是,代码不能完全正常工作。我真正想要的是一个方法 stackLimitsAlmostReached,它返回一个布尔值,指示是否存在堆栈溢出的危险。如何检查堆栈限制,并在 Java 中完成 Chicken Scheme 风格的递归?

0 投票
2 回答
5406 浏览

function - How to define a variadic function

I'm looking for something similar to Javascript's arguments array:

I'm aware of the dot notation for variable argument lengths and also scheme's apply function.

This doesn't seem to work as the dot is taken to be the first argument:

This works but isn't ideal. I'd like to call the function without the extra syntax to define the args list:

0 投票
1 回答
789 浏览

scheme - 是否有任何使用方案开发的窗口管理器?

现在 stumpwm 是我每天的桌面。太棒了,我非常喜欢。stumpwm 是使用通用 lisp 开发的,这是一种实用的 FP 语言。

Scheme 比 common lisp 更古老。而且似乎很少有使用方案开发的应用程序。方案是否只适用于教学?

问候!

0 投票
1 回答
443 浏览

syntax - 鸡计划是否支持复数?如果是这样,为什么我会收到此错误?

我刚开始学习一点计划,我正在使用 Dorai Sitaram在 Fixnum Days 的自学计划。在上述工作中指出:

方案编号可以是整数(例如,42)...或复数(2+3i)。

强调我的。注意表格。

使用到目前为止我学到的原理,我尝试编写一些不同的程序来处理不同类型的数字。我最终编写了这个非常简单的代码片段来测试复数:

codepad.org(使用 MzScheme)和Ideone.com(使用 guile)上对此进行了完美的测试。

现在,当我使用 Chicken Scheme(我的本地开发环境)尝试它时,它编译得很好,但是在运行时,崩溃并给我错误:

显然有一个未绑定的变量错误,但我有限的方案我什至不知道这意味着什么(还。)

有没有其他人经历过这个?我知道 Chicken Scheme 应该非常符合标准,所以它不支持像这样简单的东西似乎很奇怪。我通过他们的文档谷歌搜索,但我找不到任何具体的东西(虽然我认为有一个外部复数库可用,所以也许这是一个提示。)

如果有人有任何建议,他们将不胜感激。提前致谢!:)

0 投票
1 回答
355 浏览

compilation - 如何在编译环境中使用鸡蛋?

这是对我之前的问题的跟进。不幸的是,默认情况下,Chicken Scheme 似乎不支持复数,而是提供了一个numbers可以安装的鸡蛋。

我已经通过 安装了这个 egg,chicken-install numbers我可以在解释环境中加载它。我可以通过调用来做到这一点use;在 REPL 中手动,或者.scm通过csi.

例如,此脚本完美运行:

运行时:

但是当我用(即使没有任何附加标志)编译这个完全相同的片段csc时,我会得到与不加载它时相同的运行时错误(例如未绑定的变量。)似乎在编译环境中use没有切芥末。

另外两件需要注意的事情是,根据文档,我尝试了其他导入功能,例如require-extension,require-library等,但没有任何区别。另一个是,如果我将模块的名称更改为 以外的其他名称numbers,例如numberss,它无法编译,抱怨它无法加载扩展,因此显然它至少检测到该numbers库已安装。

谁能解释一下,最好是通过一个简短的工作示例如何在编译环境中使用鸡蛋?提前致谢!:)

0 投票
1 回答
878 浏览

random - 如何在 Scheme 中正确播种随机函数?

我的印象是,在启动 Scheme 时,randomize以当前时间为种子调用该过程。但是,如果我有一个仅由 组成的 Scheme 脚本(print (random 10)),我收到的唯一输出是7; 没有其他号码。那么,我做错了什么?作为记录,我正在使用鸡计划。