问题标签 [chez-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 - 如何为 Chez 方案配置 Sublime3?
我已经编译了 chez 方案并在 OSX 系统中安装了 sublime3 SublimeREPL 和方案。
并配置为如何为 mit-scheme 配置 SublimeREPL?话题。
编辑 SublimeText3 >> InstalledPackages >> Scheme.sublime-package(用Zip软件打开) >> Scheme.sublime-build(修改如下)
我可以在 sublimeREPL 中打开 chez 方案解释器,但是当我想用“构建系统:方案”构建文件时,出现错误“[Errno 2] 没有这样的文件或目录:'scheme'”,我应该如何修改构建系统代码?
import - 如何导入相对于主文件而不是当前目录的文件?((切斯)计划)
例如,在我的main.scm
文件中,我有(load "util.scm")
. util.scm
是与 . 位于同一文件夹中的文件main.scm
。这两个文件都位于~/documents/myproject/
.
现在,当我在这个目录中时,我运行$ chez-scheme main.scm
一切正常。但是,如果我在我的主目录中运行$chez-scheme documents/myproject/main.scm
它会抱怨,找不到文件util.scm
。我想是这种情况,因为当前目录是我相关的主目录,因此util.scm
确实不存在,它实际上在documents/myproject/
. 话虽这么说,我已经习惯(在其他语言中)相对于包含导入指令的文件查找这些路径的功能,我也想在这里拥有它。我已经尝试通过将文件添加前缀./
或将文件定义为库并执行(import (util))
但它在documents/myproject/
. 有什么办法可以让它按我的意图工作吗?
我认为这是特定于 Chez-Scheme 的。如果不是,我更喜欢实现中立的答案。
emacs - Emacs、Geiser 和 Chez 方案,带转录功能
我正在阅读Dybvig 的“The Scheme Programming Language”一书。我使用Chez Scheme 9.4.1作为我的 REPL。我正在使用Geiser在 Emacs 中运行所说的 REPL 。Chez Scheme 有一个transcript-on
功能,可以将 REPL 的输入和输出记录到一个文本文件中,我觉得这很有用。然而,通过在 Emacs 和 Geiser 中运行它,我还从 Geiser 获得了一个正在运行的“注释”,它使文本文件输出变得不必要的冗长和繁琐,因为它包含非常冗长的 Geiser 输出。例如
如何将到文本文件的输出限制为 REPL 的“读取”和“打印”输入和输出,而没有不必要的 Geiser“注释”,同时仍然获得在 Emacs 和 Geiser 中运行它的好处?
scheme - 方案 - 编写一个类似 foldl /fold-left 的函数,该函数适用于给定列表的前 3 个项目
我想编写一个获取和中缀表达式并将其更改为前缀的函数。首先假设我们只处理 + 运算符,所以我想将表达式 1+1+1 更改为: (+ (+ 1 1) 1)
我想使用 foldl 或类似 foldl 的方式来做到这一点:将列表中的第二个项目(始终是操作数)附加到第一个和第三个(按该顺序)然后我想要我们刚刚的表达式附加成为列表中的第一项,因此我将递归地对列表的其余部分执行相同操作。
我试过以下方法:
但后来我意识到给 fold-left 的 lambda 必须有 2 个参数,但我想处理列表的前 3 个项目。
我希望我已经说清楚了,因为它有点棘手..
debugging - 方案 - 在递归函数中显示不会在屏幕上打印
我有使用函数boundsInLambda的函数getBoundedVars。最后,所有框bBox都应包含表达式exp中的所有有界变量。我正在尝试调试此函数,为此我想在每次激活该函数时打印boundsInLambda的参数,但由于某种原因,这些值不会显示在屏幕上。如果我将显示操作放在getBoundedVars中,它将打印它,但这些只是第一次迭代中的值。
如果我运行以下命令:
(getBoundedVars (lambda-simple (x) (lambda-simple (y) (const x))) bx)
当 bx 为空框时,
'1 将被打印,但 boundsInLambda 中的打印命令不会
这是代码:
任何帮助将不胜感激。
chez-scheme - 如何将 void** 传递给 Chez Scheme 中的外部函数
当一个外部函数声明为
在内部创建一个 Db 实例并将指针分配给*db
,从 Chez Scheme 处理此问题的最有效方法是什么?
我唯一能想到的就是使用 foreign-alloc 为 C 指针分配内存,将地址传递给它,复制地址,然后立即释放该内存:
有没有办法避免为指针临时分配内存?
import - 如何在 Chez 方案中正确(导入(srfi :42))?
(系统:centos 7、64位)
我正在尝试将 srfi-42 导入我的程序。对我来说,这是 Chez Scheme 中的第一个 srfi。
srfi 库位于:
我将此目录添加到我的 .emacs :
在 emacs 中,geiser 启动 chez。emacs 似乎知道这个目录:
repl 似乎导入了 srfi-42:
我认为“i”是个问题,所以我在 let 中定义了“i”:
我需要做什么才能实际使用导入?这是我第一次在 Chez Scheme 中使用任何导入。
“list-ec”是否需要限定符?
我从git获得了 srfi, 这是“标准”吗?Chez 计划是否有更“官方”的回购?
scheme - Chez Scheme:Macroexpand 实现
Chez Scheme 是否提供标准macroexpand
实施?如果没有,是否存在一些合适的替代品?
functional-programming - (Chez) 计划基准?
既然 Chez Scheme 是开源的,我想知道它在性能方面与 Racket 和其他 Scheme 或语言相比如何,以便人们可以在自己的项目中使用它们做出明智的选择。
不幸的是,我找不到任何相关的基准。
我发现了以下内容:
https://ecraven.github.io/r7rs-benchmarks/benchmark.html
问题:没有 Racket 或其他语言( 2018 年 10 月 13 日更新:Chez 现在包含在一些基准测试中)
http://www.larcenists.org/benchmarksGenuineR6Linux.html
问题:没有 Chez Scheme 或其他语言
https://benchmarksgame-team.pages.debian.net/benchmarksgame/
问题:只有 Racket,有问题的比较(例如,Python 不允许在明显有帮助的地方使用 Numpy,而 Racket 正在对 GMP 进行 FFI 调用)
因此,我发现的任何基准测试都不允许您将 Racket 与 Chez 进行比较,或者将 Chez 与 SBCL 或 Java 进行比较。是否有 Chez 基准测试可以让您了解它的速度?
Chez Scheme 通常被认为是最快的 Scheme/Lisp。对于典型的业务逻辑应用程序,我们应该知道它是否比 Java 更快。