问题标签 [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.
module - 鸡计划:模块过程是否只使用模块内部的过程?
假设我有以下两个模块:
调用func2
in func3
usemod2
的版本func1
还是mod1
的版本?
scheme - 在 Chicken Scheme 中运行时更改程序代码
是否可以在csi解释程序代码时更新程序代码,鸡方案解释器?如果是这样,怎么做?
这样我就可以交互式地更改部分代码并立即看到更改的效果。例如,假设我编写了以下程序:
(假设(rest 1)
具有暂停程序一秒钟的效果)。
如果我通过csi运行这个程序,它会每秒打印一次字符串“Ciao”。如果我将字符串“Ciao”更改为其他内容,例如“else”,并保存程序代码文件,然后csi继续解释旧程序代码,因此我不断看到字符串“Ciao”。在这种情况下,我希望当我用“else”替换字符串“Ciao”保存修改后的代码时,csi通过查看修改后的文件而不是旧文件来继续其解释工作。这样我就获得了一些“Ciao”作为输出,然后是一些“else”:当我在源代码中将“Ciao”替换为“else”时,“else”开始出现。
namespaces - 鸡计划中的命名空间
命名空间如何在 Chicken Scheme 中工作?我现在正在使用parley
egg,当我定义一个名为 eg 的函数时read
,由于名称冲突而导致错误(实际上,因为我read
覆盖了parley
自己的read
,并且它被错误的类型调用。
这是代码:
我怎样才能避免这样的碰撞?
更新
我已经减少了重现这一点所需的代码:
这会出现以下错误:
Error: illegal non-atomic object: #<input port "readline.scm">
显然,我的read
功能与parley
read
. 但我不知道如何在不重命名函数的情况下避免这种情况。
scheme - 创建可从 csi 访问的库
假设我有一个库 foofoo.scm
像这样:
我有一个程序program.scm
:
现在,我使用 编译 foo 并生成导入库csc -J -library foo.scm
,然后使用csc program.scm
. 运行程序按预期显示“7”,一切正常。但是,我想在解释器(csi)中以交互方式加载程序,但现在由于某种原因,每次调用 foo 中的函数都必须加上前缀foo#
,即在解释器中(foo#bar 2)
有效,但(bar 2)
即使它在使用时也不起作用一个源文件。
为什么是这样?这不仅有点烦人,我还担心我可能对模块系统在 Chicken 中的工作方式有误解,所以任何澄清都将不胜感激。
scheme - 从外部文件加载过程时出现未绑定变量错误
我在从源代码构建的 Cloud9 托管工作区上使用 Chicken Scheme 4.9.0.1。
我正在尝试这个(我主要用python编写代码,所以我为奇怪的parens语法道歉):
其中指数是:
但它给了我以下错误:
我在不同的方案实施(biwascheme,使用他们的在线 REPL)上尝试了相同的过程,并且成功了。当我将代码直接添加到我正在处理的文件中而不从单独的文件中加载它时,它就可以工作了。
为什么只有从单独的文件加载时才会给出未绑定的变量错误?
scheme - 小鸡计划中的发电机
此代码在codepad.org提供的 Racket Scheme 中有效,在显示“意外返回”消息之前在连续的行上显示数字 1、2 和 3,但在ideone.com使用 Chicken Scheme 相同的代码失败,我不'不明白 Chicken Scheme 提供的错误信息。我怎样才能使它与鸡计划一起工作?
scheme - 鸡计划中的复数
为什么默认情况下在鸡方案中(即不加载诸如数字蛋之类的扩展名)定义了过程real-part
, imag-part
, angle
, magnitude
,complex?
但没有make-rectangular
和make-polar
?如果我无法创建复数,我应该如何处理它们?
loops - 用于方案的顺序执行 (do*)
在 Common Lisp 中,有 ; 的顺序形式(do *vars* *test* *body*)
。就像let 's 顺序并行一样let*
,它*vars*
一次处理一个,因此您可以参考以前定义的变量,如下所示:
在 Scheme、AFAIK 中,没有相关函数或宏。有do
,但没有do*
。我一直在尝试do*
为 Chicken Scheme 编写一个实现,但到目前为止,我一直在努力取得任何进展......我想,我真的说不出来。我对鸡计划很熟悉,但我总是觉得计划宏令人困惑。
这是我到目前为止所得到的:
但是我不断收到错误,例如doloop
不是列表-目前,我得到了
这是do*
来自HyerSpec的 Common Lisp 的粗略:
do* 类似,除了 let* 和 setq 分别替换了 let 和 psetq。
do*
以下是 CL 中扩展的内容:
emacs - 在 Emacs 中运行鸡计划时遇到问题
我最近通过 Racket 进入了 Scheme,现在我想使用 Chicken Scheme。Emacs 似乎几乎是除了 Racket 之外我在 Scheme 中开发的唯一选择,所以我启动了我不太擅长的 Emacs。
我之前使用本教程为 SBCL 设置了 emacs,但我对 Emacs 真的一点经验都没有。(注:我在windows上)
我做了什么:
我像上面描述的教程一样设置了一个类似 unix 的文件结构,我在 Z:\home\myname\bin\chicken-iup 中安装了 Chicken-Scheme
我尝试按照此页面上的说明进行操作,但实际上并没有太多。它说我需要 quack 但没有解释太多,我只是从该站点下载了 quack.el 并将其放在我的 site-lisp 文件夹中
我将以下行添加到我的 .emacs 文件夹中
(setq scheme-program-name "csi -:c") (需要'quack)
在之前链接的页面上,有这个快照,这是我想要的
您可以在顶部看到一个文件打开以写入文本,而 REPL 在底部,但是,当我打开 emacs 并执行 Mx run-scheme 时,我无法得到它
我有两个选择,Mx run-scheme 然后“鸡”给了我鸡介绍屏幕,但立即说“过程完成”
另一方面,Mx run-scheme csi 只是给了我一个看似没有 REPL 的空白缓冲区
直接在 Windows 中运行 csi.exe 会打开一个带有介绍文本和 repl 的控制台窗口,但我想像第一个快照一样在 emacs 中使用它,这不起作用
我也尝试过 chicken-slime SWANK 后端,但无法正常工作,搜索谷歌并没有太大帮助
那么,有人知道我需要做什么才能在emacs中的Chicken Scheme中进行开发吗
(或者,如果在 DrRacket 之外还有其他用于开发的 Scheme 环境,我很想知道,除了 DrRacket 或 Emacs 之外,我没有找到太多信息)
提前致谢
scheme - csi和csc(鸡计划)的区别
为什么函数是compose
在解释器中csi
而不是在编译器中定义的csc
?我知道我可以很容易地自己定义它,但我只是想知道为什么会有这样的差异。