问题标签 [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.
lisp - 如何在鸡肉方案中打印用 defstruct 制作的数据结构的所有“部分”
假设我们有上面的代码:
我知道我可以使用(树高椰子)来查看椰子的高度,但是一个命令中的所有椰子信息怎么样?我还尝试了 (tree->alist 椰子) 产生: ((height . 30) (age . 5) (leaf-color . 'green)) 但我不能使用类似的东西:(for-each pp 椰子)。是否可以这样做,或者用适当的命令编写我的打印树是唯一的解决方案?
lisp - 搜索包含列表或 cons 的列表
假设我们得到了一个这样的列表(包含更多元素,但方法应该相同):
我们总是可以在现有列表中添加更多元素。这是最有效的方法,可以说编写一个获取用户名并返回姓氏的函数:
就像是 :
在这种情况下,一般做法是什么?谁能指出一个如何做的例子/链接?
list - 一切都是计划中的清单吗?
除了“Simply Scheme”(第二版)这本书,我还在 youtube 上观看“Computer Science 61A - Lectures”。在讲座中,导师使用 Stk 解释器,但我使用的是鸡计划解释器。
在第一堂课中,他使用了“第一个”程序,如果它被称为:
它返回“h”。
在“简单方案”一书中,它有一个如何实现 first 的示例:
如果发送,我的测试和理解是一个列表。我试图了解在方案中说“一切都是列表”是否合适。更具体地说,'hello中的列表在哪里,如果有,为什么它在第一个过程中不起作用,因为它是在书中写的?
此外,如果每个实现都是用“一切都是列表”来编写的,那么为什么相同的代码在所有方案实现中都不起作用?
garbage-collection - 如何获取有关堆栈限制的平台特定信息
我正在制作一个解释器,它以鸡计划的风格进行内存分配。基本思想是:
和
示例指令是:
我需要知道的是 STACK_LIMIT 的值应该是什么(我还需要知道堆栈是向上还是向下增长。)如何获取有关堆栈限制的平台特定信息?
java - 如何检查堆栈限制,并在 Java 中完成 Chicken Scheme 风格的递归?
考虑以下代码。这段代码几乎实现了 Chicken Scheme 风格的递归,其中大部分时间函数是直接调用的,但偶尔会有更复杂的蹦床过程。但是,代码不能完全正常工作。我真正想要的是一个方法 stackLimitsAlmostReached,它返回一个布尔值,指示是否存在堆栈溢出的危险。如何检查堆栈限制,并在 Java 中完成 Chicken Scheme 风格的递归?
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:
scheme - 是否有任何使用方案开发的窗口管理器?
现在 stumpwm 是我每天的桌面。太棒了,我非常喜欢。stumpwm 是使用通用 lisp 开发的,这是一种实用的 FP 语言。
Scheme 比 common lisp 更古老。而且似乎很少有使用方案开发的应用程序。方案是否只适用于教学?
问候!
syntax - 鸡计划是否支持复数?如果是这样,为什么我会收到此错误?
我刚开始学习一点计划,我正在使用 Dorai Sitaram在 Fixnum Days 的自学计划。在上述工作中指出:
方案编号可以是整数(例如,42)...或复数(2+3i)。
强调我的。注意表格。
使用到目前为止我学到的原理,我尝试编写一些不同的程序来处理不同类型的数字。我最终编写了这个非常简单的代码片段来测试复数:
在codepad.org(使用 MzScheme)和Ideone.com(使用 guile)上对此进行了完美的测试。
现在,当我使用 Chicken Scheme(我的本地开发环境)尝试它时,它编译得很好,但是在运行时,崩溃并给我错误:
显然有一个未绑定的变量错误,但我有限的方案我什至不知道这意味着什么(还。)
有没有其他人经历过这个?我知道 Chicken Scheme 应该非常符合标准,所以它不支持像这样简单的东西似乎很奇怪。我通过他们的文档谷歌搜索,但我找不到任何具体的东西(虽然我认为有一个外部复数库可用,所以也许这是一个提示。)
如果有人有任何建议,他们将不胜感激。提前致谢!:)
compilation - 如何在编译环境中使用鸡蛋?
这是对我之前的问题的跟进。不幸的是,默认情况下,Chicken Scheme 似乎不支持复数,而是提供了一个numbers
可以安装的鸡蛋。
我已经通过 安装了这个 egg,chicken-install numbers
我可以在解释环境中加载它。我可以通过调用来做到这一点use
;在 REPL 中手动,或者.scm
通过csi
.
例如,此脚本完美运行:
运行时:
但是当我用(即使没有任何附加标志)编译这个完全相同的片段csc
时,我会得到与不加载它时相同的运行时错误(例如未绑定的变量。)似乎在编译环境中use
没有切芥末。
另外两件需要注意的事情是,根据文档,我尝试了其他导入功能,例如require-extension
,require-library
等,但没有任何区别。另一个是,如果我将模块的名称更改为 以外的其他名称numbers
,例如numberss
,它无法编译,抱怨它无法加载扩展,因此显然它至少检测到该numbers
库已安装。
谁能解释一下,最好是通过一个简短的工作示例如何在编译环境中使用鸡蛋?提前致谢!:)
random - 如何在 Scheme 中正确播种随机函数?
我的印象是,在启动 Scheme 时,randomize
以当前时间为种子调用该过程。但是,如果我有一个仅由 组成的 Scheme 脚本(print (random 10))
,我收到的唯一输出是7
; 没有其他号码。那么,我做错了什么?作为记录,我正在使用鸡计划。