问题标签 [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.
scheme - 在 CHICKEN-Scheme 中动态加载编译的库
我想知道,如果可能的话,在 CHICKEN-Scheme 中动态加载编译代码的最佳方式。API 状态load
仅加载源文件。
具体来说,我动态加载代码的目标是能够覆盖以前定义的函数。即foo
在库 1 中将被foo
库 2 中的不同替换。
emacs - 如何在 emacs 中添加缩进一个劣质方案(REPL)?
我正在使用 Chicken-scheme 。我M-x run-scheme
用来启动一个方案 repl,然后我使用诸如C-c C-l
测试我的工作之类的东西。
然而,这是一个缩进的噩梦。事情通常是这样的:
而不是想要的:
我怎样才能轻松解决这个问题?我知道我可以repl
用 geiser 开始做鸡,但这会破坏键绑定,我真的不想让事情变得比现在更复杂。我只是希望它在我按下回车时正确缩进,就像在我的non-repl
缓冲区中一样,仅此而已。
我只是想要最简单的解决方案来获得一些不错的缩进,就像 lisp 的标准一样。我想补充一点,我在其中编辑文件的缓冲区完全没问题,只是repl
那个不起作用。
hashmap - How to use associative arrays or Hash tables in Chicken Scheme?
How to use associative arrays or Hash tables in Chicken Scheme?
I'm looking for a data structure that supports (near) O(1) access to data based on keys, which should work like Java's HashMap
or Python's dict
data structures in Chicken Scheme.
There seem to be eggs that implement that functionality, but I'd rather use something more standard.
Apparently, there seems to be an effort to define a standard library with Scheme R6RS, but I'm not sure if that's a viable option for Chicken.
function - 方案中的嵌套 lambda
我正在尝试在方案中定义一个函数,该函数在调用时打印一条消息,然后是换行符。为此,我尝试像这样使用嵌套的 lambda:
但是,当我这样做时,并调用如下函数:
它只打印#f,不创建换行符。如果我在函数中反转 lambda 顺序并交换 newL 和 msg lambda 的位置,那么它只会打印一个换行符而不显示消息!
该函数在此代码块中调用:
不使用嵌套 lambda 时收到的错误消息如下:
错误:非程序调用:#
任何帮助,将不胜感激。
function - 方案:从 Let 转换为 Lambda
所以我正在尝试使用一些代码并在let和lambda两种方案表达方法之间进行更改。
我的代码如下:
我正在尝试将最外层的let定义更改为lambda格式,但由于代码的嵌套性质,这有点令人困惑。到目前为止,我试图做的是:
这显然是错误的,但我不知道如何进一步进行......
scheme - 在函数定义中调用非过程?
我在网上找到了一个关于Scheme的简短介绍,我在使用这个功能时遇到了一些麻烦:
当我尝试调用它时,我得到了这个:
该错误来自 Chicken Scheme,我在 Chez Scheme 中也得到了相同的结果。
它将字符串转换为标题大小写,并且根据我之前收到的错误消息,它确实:call of non-procedure: "Star Wars Iv: A New Hope"
scheme - Chicken编译器中的模式匹配编译错误,但Chicken解释器中没有
我试图让模式匹配工作,但我只能让它在鸡解释器中工作 - 而不是编译器。
这是解释器中的一个示例:
这是编译后的版本:
这失败了(csc src/test.scm
):
我错过了什么?
compiler-errors - Chicken Scheme:加载或编译时缺少警告/错误消息
我在小鸡计划中玩了一会儿,但我发现了一些不寻常的东西。假设我有以下简单的源文件:
很明显(对于人豆而言)这是行不通的。当我启动csi
并手动输入此函数定义时,我收到以下消息:
很高兴知道!在运行大型程序之前,最好在大型程序中找到拼写错误。现在,让我们重新启动csi
并尝试load
文件:
输出:
也很好。现在,让我们尝试csi
使用该文件启动!
呃……错误信息去哪儿了?为什么不存在?好吧,也许当我真正尝试编译它时它会抱怨......
没有。即使我将行添加(f 2)
到文件末尾(以避免f
-function 被优化),我仍然没有收到任何类型的错误消息或警告。
为什么?解释器(或至少是其中的手动load
部分)如何立即注意到这个问题而编译器却不能?有趣的是-no-warnings
,编译器有一个参数。正如预期的那样,它什么都不做,因为没有警告。
我错过了什么?我该如何解决?它可以修复还是我必须在实际编译任何程序之前手动手动输入load
每个涉及的文件?csi
function - Default argument in scheme lambda function?
I recently started using ChickenScheme and now I want to declare a function with default argument (if not specified). I found this example on the Racket site, I know Racket and ChickenScheme are different but I thought that these basic things were the same.
This is the error from the ChickenScheme interpreter:
macros - 如何从 Chicken Scheme 宏中调用其他宏?
我正在尝试从 Common Lisp 转移到Chicken Scheme,并且遇到了很多问题。
我目前的问题是:如何编写define-syntax
调用其他宏的宏(大概使用?)?
例如,在 Common Lisp 中,我可以这样做:
而在 Scheme 中,等效代码不起作用:
append-to
不能从宏调用宏something-else
。我收到一条错误消息,说append-to
“变量”未定义。
根据我从谷歌和其他来源收集到的所有信息,宏是在封闭环境中评估的,无法访问其他代码。本质上,在评估宏时,除了内置的 Scheme 函数和宏之外,什么都不存在。我已经尝试使用er-macro-transformer
, syntax-case
(无论如何现在在 Chicken 中已弃用)甚至procedural-macros
模块。
当然,宏的全部目的是它们建立在其他宏之上,以避免重复代码。如果必须单独编写宏,那么在我看来,它们几乎毫无用处。
我调查了其他方案的实现,但没有更多的运气。似乎它根本无法完成。
有人可以帮我解决这个问题吗?