问题标签 [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.

0 投票
2 回答
445 浏览

scheme - 如何为 Chez 方案配置 Sublime3?

我已经编译了 chez 方案并在 OSX 系统中安装了 sublime3 SublimeREPL 和方案。

并配置为如何为 mit-scheme 配置 SublimeREPL?话题。

编辑 SublimeText3 >> InstalledPackages >> Scheme.sublime-package(用Zip软件打开) >> Scheme.sublime-build(修改如下)

我可以在 sublimeREPL 中打开 chez 方案解释​​器,但是当我想用“构建系统:方案”构建文件时,出现错误“[Errno 2] 没有这样的文件或目录:'scheme'”,我应该如何修改构建系统代码?

终端方案路径测试 错误信息

0 投票
2 回答
384 浏览

scheme - chez 方案 - 基于平台的负载共享对象

Chez Scheme的OpenGL 库(目前仅适用于 Linux)加载 GLUT 库,如下所示:

这是该代码的链接。

当然,我们希望库libglut.so.3在 Linux 上加载,但GLUT.framework/GLUT在 macOS 上加载。

以下是 Ypsilon Scheme 如何基于平台加载库的示例:

在 Chez Scheme 上检查平台的好方法是什么,以便我们可以在绑定外国图书馆时做类似的事情?

0 投票
2 回答
992 浏览

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 的。如果不是,我更喜欢实现中立的答案。

0 投票
1 回答
746 浏览

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 中运行它的好处?

0 投票
1 回答
208 浏览

scheme - 方案 - 编写一个类似 foldl /fold-left 的函数,该函数适用于给定列表的前 3 个项目

我想编写一个获取和中缀表达式并将其更改为前缀的函数。首先假设我们只处理 + 运算符,所以我想将表达式 1+1+1 更改为: (+ (+ 1 1) 1)

我想使用 foldl 或类似 foldl 的方式来做到这一点:将列表中的第二个项目(始终是操作数)附加到第一个和第三个(按该顺序)然后我想要我们刚刚的表达式附加成为列表中的第一项,因此我将递归地对列表的其余部分执行相同操作。

我试过以下方法:

但后来我意识到给 fold-left 的 lambda 必须有 2 个参数,但我想处理列表的前 3 个项目。

我希望我已经说清楚了,因为它有点棘手..

0 投票
0 回答
193 浏览

debugging - 方案 - 在递归函数中显示不会在屏幕上打印

我有使用函数boundsInLambda的函数getBoundedVars。最后,所有框bBox都应包含表达式exp中的所有有界变量。我正在尝试调试此函数,为此我想在每次激活该函数时打印boundsInLambda的参数,但由于某种原因,这些值不会显示在屏幕上。如果我将显示操作放在getBoundedVars中,它将打印它,但这些只是第一次迭代中的值。

如果我运行以下命令:

(getBoundedVars (lambda-simple (x) (lambda-simple (y) (const x))) bx)

当 bx 为空框时,

'1 将被打印,但 boundsInLambda 中的打印命令不会

这是代码:

任何帮助将不胜感激。

0 投票
0 回答
163 浏览

chez-scheme - 如何将 void** 传递给 Chez Scheme 中的外部函数

当一个外部函数声明为

在内部创建一个 Db 实例并将指针分配给*db,从 Chez Scheme 处理此问题的最有效方法是什么?

我唯一能想到的就是使用 foreign-alloc 为 C 指针分配内存,将地址传递给它,复制地址,然后立即释放该内存:

有没有办法避免为指针临时分配内存?

0 投票
0 回答
488 浏览

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 计划是否有更“官方”的回购?

0 投票
1 回答
251 浏览

scheme - Chez Scheme:Macroexpand 实现

Chez Scheme 是否提供标准macroexpand实施?如果没有,是否存在一些合适的替代品?

0 投票
2 回答
6094 浏览

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 更快。