问题标签 [guile]

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 回答
2023 浏览

dictionary - 在 guile 方案中,如何迭代键值对列表(即哈希映射)?

我正在玩弄诡计来尝试熟悉纯函数式编程概念。在我可以用任何语言做任何有用的事情之前,我需要了解一些基本的数据结构以及如何有效地操作它们……尤其是可枚举的数据结构。

我可以迭代这样的列表(我不确定我是否正确缩进):

哈希表/哈希映射在方案中是什么样的?是否有一个真实的数据结构来表示一个,还是归结为制作一个列表?在这种情况下,如何从内部列表中获取键和值作为单独的变量?

显然这是错误的,因为 lambda 需要一个值,而不是两个:

我正在尝试做的 Ruby 等价物是:

0 投票
2 回答
642 浏览

lambda - 何时使用带有“裸”形参数的 lambda 定义?

我现在正在学习 Guile Scheme,在文档中我突然遇到了以下结构:

这让我陷入了困境;到目前为止,我一直假设形式参数总是包含在一个列表中:

我想知道何时使用此变体,以及这与可变数量参数的点表示法有何不同。具体来说,以下两种变体有什么区别:

是否有区别——也许对于更复杂的例子——我需要注意,有什么理由更喜欢其中一个吗?

0 投票
3 回答
256 浏览

macros - 是否可以只打印传递给 Scheme 宏的字符串?

我正在使用 guile 方案开发语言翻译器,并且需要处理基本情况,即您尝试转换单个单词。

这应该返回字符串var而不是数字5
如何使用 R5RS 方案宏(define-syntax样式)来做到这一点?

编辑:
我正在从 Scheme 翻译成 Coffeescript。

0 投票
2 回答
2607 浏览

scheme - 如何检查符号是否是过程

我正在尝试编写一个宏来检查列表以查看是否有过程调用,但我不太确定如何去做。我首先想到的是使用程序?功能检查,但它不起作用。我试图做的一个例子如下:

现在,该列表的汽车返回+,但函数仍然返回false

有没有办法检查列表中的汽车是否是程序?

0 投票
1 回答
632 浏览

macros - 关于诡计的方案:让语法无效?

对于函数式编程任务,我正在编写一个将方案代码转换为咖啡脚本代码的方案宏。我在 Linux Mint 12 上使用 guile,并且 (use-syntax (ice-9 syncase)) 处于活动状态。

目前,我正在尝试将 let-syntax 嵌套在 define-syntax 中,并且不断收到意外的“无效语法”错误。请原谅任何不良的编程习惯,因为我是一个计划新手。:)

我的代码:

和我的输出:

经过几次尝试研究这个错误之后,我开始认为我只是不理解一些基本的东西。我确信你可以在定义语法中嵌套一个 let 语法。我究竟做错了什么?

0 投票
2 回答
928 浏览

lisp - 为什么尾递归 Collat​​z 猜想会导致 Scheme 中的堆栈溢出?

我在 Scheme 中写过 Collat​​z 猜想:

这是一个尾递归调用,但是当我调用 (C 121) 时出现堆栈溢出:

为什么正确的尾递归会导致溢出?如您所见,我使用 Guile 作为 Scheme 解释器(版本 1.8.7)。

0 投票
1 回答
795 浏览

gtk - 如何在 Guile 中使用模块?`$ 诡计复制.scm; 错误:没有模块代码(gnome-2)`

我学习了有关 Scheme 的基础知识并想尝试 Guile。
当将此示例复制到此处的第一个示例并作为脚本运行时,发生错误,

我的笔记本电脑运行 Fedora 16 x86_64,yum install guile* 如何处理 Guile 的模块?

0 投票
1 回答
4556 浏览

scheme - Guile 方案和标准方案之间的区别(在 Racket IDE 中)?

我有一堆想要在 Racket Scheme IDE 中运行的“遗留”Guile Scheme 代码。似乎有足够的差异使这成为一项重要的练习。(我的 Scheme 知识水平是完成 The Little Schemer 的水平)。

我的问题是:

  1. Guile 方案和标准方案(在 Racket IDE 中)有什么区别?
  2. 鉴于这些差异,一般来说,我需要采取哪些步骤将一些 Guile 方案代码转换为标准方案?

附加:(对 Racket Scheme 和 R5RS/R6RS 之间的分歧感到高兴)-我想要的是在 Racket IDE 中运行“某些东西”-而不是在 Racket 语言中运行。

0 投票
1 回答
80 浏览

guile - guile 中是否有类似 Tcl_LinkVar 的函数可以将 C 变量直接链接到 guile 变量?

Tcl_LinkVar可以将 C 变量直接链接到 Tcl 变量。当 C 中的变量发生变化时,Tcl 变量也会相应地发生变化。非常方便。

例子:

我想知道Guile是否支持类似的功能?或者当变量发生变化时,我每次都必须将值传递给方案中的变量。

0 投票
1 回答
470 浏览

parsing - 方案 - LALR 解析器生成 - 来自字符串的输入

我们正在尝试生成(以诡计)从字符串而不是标准输入读取字符的解析器和词法分析器。

我们开始修改 http://code.google.com/p/lalr-scm/source/browse/trunk/calc.scm?r=52代码中包含的计算器示例

问题似乎在以下行:

我们尝试定义一个新的输入端口:

并且变量程序是这样定义的:

但它不起作用,它仍然等待标准输入字符。

该文档缺少详细信息,因此我们无法弄清楚如何解决这个问题。

谢谢