问题标签 [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 - 小鸡方案中的缓冲 I/O?
Racket 有很好的read-bytes-async!
功能,我相信它存在于世界上所有其他编程语言中。它从输入流中读取它所能读取的内容,没有阻塞,进入缓冲区,返回写入的字节数。
所述功能似乎是有效实现例如 Unixcat
工具的绝对必要功能,但 Chicken Scheme 似乎缺乏任何此类功能。当然,我可以使用(read-byte)
and (write-byte)
,但这很慢并且会占用我所有的 CPU。
甚至(copy-port)
似乎没有任何这样的实现。相反,在关闭流之前,仅当缓冲区填满时,才逐个缓冲区复制数据。这意味着它(copy-port (current-input-port) (current-output-port))
的行为根本不像cat
。
我只是在阅读文档时遇到了一个可怕的盲点,还是 Chicken 令人震惊地实际上缺乏这样的功能?那么cat
在Chicken中甚至不能有效地编写?
python - Chicken for python:使用共享库扩展 python
我已经读到可以通过编写一个共享库来扩展 Python ,Python 解释器可以将其作为导入语句的一部分加载。
谁能给我指出一个简单的例子或教程,通过使用Chicken Scheme而不是C/C++来完成这样的努力?据说鸡肉可以生产“便携且高效的 C”——因此它应该适合这样的任务,不是吗?
干杯!
chicken-scheme - 从 Chicken Scheme 中的系统命令获取输出
我将如何从 Chicken Scheme 中的系统命令获取输出?
这是我通常在 NewLISP 中执行的操作:
scheme - 如何在方案中找到未使用的列表/程序?
我正在清理一些(鸡)方案代码,我想识别给定程序中未使用的所有列表/程序。是否有一个特定的选项可以传递给 Chicken 编译器,或者csi -s
我可以用来这样做而不列出脚本中的标识符的每个define
和grep
-ing ?*.scm
scheme - 是否有加载 SRFI 的标准化方法?
在 Chicken 中看起来我可以(use srfi-9)
,但在 Guile 中看起来像你说的那样(use-modules (srfi srfi-9))
,在 Racket 中它是(require srfi/9)
。是否有一个标准化的use-module
形式应该适用于所有方案实现(以便我可以编写可移植代码)?
scheme - 我是新来的计划,我不知道出了什么问题
我正在编写一个函数,该函数需要一个战斗的骑士列表。运行他们的战斗的代码正在运行(jousting-game),现在我正在编写一个锦标赛系统,但我无法让我的锦标赛轮工作。正如我所说,它需要一个骑士列表,让他们递归地战斗,直到每个人都战斗,然后返回两个列表,一个是胜利者,一个是失败者。我已经尝试了我所知道的一切,无论我做什么,我都会收到错误并且代码拒绝工作,我不明白为什么。这是我到目前为止所写的:
有人可以向我解释为什么我收到错误“非程序调用:#”,我以后如何避免这个错误?我确定我只是不了解重要的方案/lisp,我真的可以使用一个解释。
感谢大家的帮助,问题已经解决
c - 阅读 STDIN,鸡计划
我知道如何(或多或少)在 C 中做到这一点:
期望的最终结果是从管道中读取 STDIN(如果存在)。(我知道上面的代码没有这样做,但我无法弄清楚从管道/heredoc 读取时如何只执行上述操作)。
我将如何在鸡肉计划中做类似的事情?
就像我之前说的,最终目标是能够做到这一点:
c - 如何在编译后的代码中加载附件文件,Chicken Scheme
我目前正在研究一组用 Chicken Scheme 编写的实用程序,这是我第一次尝试在 Chicken Scheme 中编写基于多文件的程序(或一组程序),我遇到了一些麻烦弄清楚如何正确使用附件文件中定义的代码,以便在编译所有内容时,文件中定义的代码A
将可以被编译后的文件形式访问B
。我基本上需要 Chicken Scheme 的等效于以下 C 代码:
我已经尝试使用以下所有方法,但它们都产生了各种不寻常的错误,例如:'()
未定义,这没有意义,因为'()
只是另一种写作方式(list)
。
scheme - 语法规则表达式本身是否评估为 Scheme 中的值?
在 Chibi 和 CHICKEN 中,以下syntax-rules
表达式计算为一个过程:
这只是这些特定实现如何编写的产物吗?Scheme 语言规范似乎没有要求syntax-rules
能够评估为一个值。
更新
看来这可能取决于 Scheme 的版本?
语义:语法规则的实例在宏扩展时通过指定一系列卫生重写规则来评估新的宏转换器。一个宏的使用,其关键字与由 syntax-rules 指定的转换器相关联,与 s 中包含的模式相匹配,从最左边的 开始。找到匹配项后,将根据模板卫生地转录宏使用。找不到匹配项时,这是语法冲突。
语义:语法规则的一个实例通过指定一系列卫生重写规则来生成一个新的宏转换器。使用关键字与由 syntax-rules 指定的转换器相关联的宏与语法规则中包含的模式相匹配,从最左边的语法规则开始。找到匹配项后,将根据模板卫生地转录宏使用。
vim - 如何将多行粘贴到鸡计划解释器中?
尝试开始使用鸡计划时,我发现自己被 REPL 挫败了。CSI 似乎不允许我将多行粘贴到其中,这使得在单独的文件中运行新函数然后将其粘贴到测试中变得非常困难。
我只是想在外部编辑中创建的一个 gulp 中将一段代码放入其中。
@romainil 回答的评论似乎表明有些人可以。只是因为我无法理解的原因而不是我。
那么,如何将多行粘贴到 csi 中?
(旁注:我在 Mac 上执行此操作。我尝试使用终端和 iTerm 2,结果相同。)
[编辑] 以前的版本包括有关如何将代码块从 vim 获取到 csi 中而不是粘贴的附带问题。@romainl 的回答涵盖了大部分内容,但是没有在 vim 中运行 shell,我还没有找到真正有效的解决方案。