问题标签 [gambit]

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 投票
1 回答
157 浏览

scheme - gambit 方案 - 将另一个文件中的函数导入当前范围

我有run文件中的功能run.scm。我想runtest.scm. 我将如何在 Gambit 方案中执行此操作?

我已经尝试过了(import "run.scm"),但它只是抱怨它import是一个未绑定的变量。

0 投票
1 回答
89 浏览

scheme - Chicken Scheme.- 如何将复数(例如: (sqrt 2) )转换为整数?不考虑舍入策略

我正在为 Chicken Scheme 进行 C 扩展,并且一切就绪,但我遇到了复数类型的问题。

我的代码只能处理整数,当完成任何涉及平方根的数学运算时,我的扩展可能最终不得不处理复数。

我只需要删除小数位并获取附近的任何整数。我不担心这个的准确性。

我环顾四周并通过代码,但没有找到任何东西。

谢谢!

0 投票
1 回答
394 浏览

cmake - 在 CMake 中向自定义编译器/语言添加额外的编译步骤

这是对我之前发布的一个问题的一点后续。我的基本问题是使用Gambit Scheme构建应用程序。

虽然上述问题中建议的解决方案有效,但它有点麻烦,所以我决定尝试将 Gambit Scheme 作为自定义编译器/语言添加到 CMake。按照这个问题中的建议,我创建了以下文件:

cmake/CMakeDetermineGambitCompiler.cmake

cmake/CMakeGambitInformation.cmake

cmake/CMakeGambitCompiler.cmake.in

cmake/CMakeTestGambitCompiler.cmake

然后,在我的项目根目录中,我还有两个文件:

CMakeTexts.txt

要构建的实际代码main.scm

给出以下结构:

虽然这适用于单个文件,但一旦我添加了另一个源文件,我需要 Gambit 首先为从 Scheme 源生成的所有 C 文件创建一个链接文件。这是一个简单的例子:

假设我添加了第二个文件factmodule.scm

并更新main.scm

为了“手动”构建这个,我执行以下操作:

我的问题是第二步,创建链接文件。理想情况下,我想在cmake/CMakeGambitInformation.cmake中添加如下内容:

但这有两个问题。一、<OBJECTS>保存生成的C文件;据我了解,给出的命令CMAKE_Gambit_COMPILE_OBJECT是在每个源文件基础上执行的。二,我显然只想运行最后两个命令一次,但在CMAKE_Gambit_LINK_EXECUTABLE调用给定的命令之前。

有没有办法在创建对象之后但在它们链接之前执行自定义命令?

我查看了CMake/Modules中的其他一些编译器,但找不到真正能做到这一点的语言。而且这个条目似乎是添加新语言最完整的文档,官方文档似乎并没有真正提及它。

0 投票
3 回答
192 浏览

scheme - 如何在 Scheme 中显示来自 eval 的错误消息?

我正在尝试创建评估表达式并将错误作为错误字符串返回的代码:

我有

  • Guile 消息Unbound variable: ~S如何获取实际的错误消息而不是模板?
  • 卡瓦例外:Argument #1 'unbound location: xxx' to 'error-object-message' has wrong type (gnu.mapping.UnboundLocationException) (gnu.mapping.UnboundLocationException cannot be cast to kawa.lang.NamedException)
  • Gauche 核心转储
  • 开局冻结

注意:这是 REPL 的一部分,我正在系统上的所有 Scheme 实现中测试它。它几乎可以工作,它可以自行运行,但我想在发生异常时显示正确的错误消息,而不是退出 REPL。

0 投票
2 回答
79 浏览

python - 如何将两个列表中的元素相乘并将结果保存在第三个列表中以在方案中返回?

我想将方案中 2 个列表的元素相乘,并将每个相乘的结果保存在函数返回的第三个列表中

并且..列表将始终具有相同的大小

python中的想法是这样的

=>C= [2, 6 ,12]

我想做同样的事情,但在一个名为相同的函数的方案中,我只有 3 天的学习计划

有什么建议么?

0 投票
3 回答
111 浏览

scheme - 嵌套的省略号宏在 Guile 和 Racket 中不起作用

我正在尝试创建一个简单的嵌套宏。它适用于我的 Scheme 实现,但无法在 Guile 和 Racket 中运行。

  • 诡计投掷:

语法:缺少省略号

  • 球拍投掷:

模板中缺少带有模式变量的省略号

我也尝试过在 Gambit 中运行,但那个只是抛出:

未绑定变量:define-syntax

我想您需要使用库来使用基本方案。

在 Checken Scheme 中,更新省略号后:

抛出:

模板尺寸错误(椭圆太少?):x

这个宏有什么问题?为什么会抛出错误?

编辑

似乎这种模式无效:

但这是

这是在某处指定的吗?为什么第一个语法无效?

为了完整起见,这段代码可以编译,但为什么第一个没有呢?

foo但是当尝试使用宏时它不起作用。它抛出:

未绑定变量:bar

即使在使用letrec-syntax.

0 投票
0 回答
22 浏览

mingw - 在 Windows 上安装 python 模块策略:MinGW 和 autotools 的问题

我正在尝试在 Windows 上安装 Python 模块“Gambit”。从文档看来,我需要

  • 下载策略
  • 安装 MinGW
  • 获取正确的软件包,以便自动工具命令工作
  • 从源代码构建 Gambit
  • 然后构建 Python 扩展

我已经安装了 MinGW(这个版本),将 C:\MinGW\bin 添加到我的环境变量中,并使用它的包管理器来安装 mingw32-autoconf、mingw32-automake、mingw32-libtool。在包管理器中没有找到 aclocal 和 libtoolize (认为 libtool 可能会起作用)。

在我的文件夹 C:\MinGW\bin 中,有所有这些文件(没有扩展名)(aclocal,libtoolize,...)。

在文件夹 C:\MinGW\var\cache\mingw-get\packages 中,有与我安装的包相对应的文件。这些是 .tar.lzma 或 .tar.xz 文件。我想我需要以某种方式打开它们(?)

如果我使用命令行 (cmd.exe),自动工具的所有命令都不起作用(不管我写的是“automake”还是“mingw32-automake”,我都试过了)。“mingw-get”命令有效并打开包管理器,因此环境变量似乎没有问题。

任何帮助,将不胜感激!

备注:我意识到这更像是一个 MinGW/autotools 问题而不是 Python/gambit 问题,但我添加了上下文,所以如果这个烦人的安装过程有捷径,人们可以告诉我。