Chicken Scheme: make-table 未绑定变量
Chicken Scheme: make-table unbound variable
我正在尝试声明一个哈希 table。基于 this SRFI 我相信 (define x (make-table))
的形式应该导致正确的行为;但是,我收到以下错误。
CHICKEN
(c) 2008-2017, The CHICKEN Team
(c) 2000-2007, Felix L. Winkelmann
Version 4.12.0 (rev 6ea24b6)
linux-unix-gnu-x86-64 [ 64bit manyargs dload ptables ]
compiled 2017-02-19 on yves.more-magic.net (Linux)
#;1> (make-table)
Error: unbound variable: make-table
Call history:
eval.scm:211: ##sys#get
eval.scm:218: values
eval.scm:255: ##sys#alias-global-hook
modules.scm:769: ##sys#qualified-symbol?
modules.scm:777: ##sys#active-eval-environment
modules.scm:777: g2354
modules.scm:784: mrename
modules.scm:762: ##sys#current-module
eval.scm:259: ##sys#symbol-has-toplevel-binding?
eval.scm:265: ##sys#symbol-has-toplevel-binding?
library.scm:1668: after
eval.scm:857: g1785
<eval> (make-table)
library.scm:4051: ##sys#get-call-chain
library.scm:3834: ##sys#make-vector
library.scm:1371: ##sys#allocate-vector <--
此外,我在其他功能上也遇到了类似的错误。会不会是我解释器安装错误?
CHICKEN 不附带 SRFI 90,据我所知,到目前为止也没有人为它制作鸡蛋。不过,更早且更常用的哈希 table 库 SRFI-69 是 part of core。它也默认不可用,您需要像这样使用它:
(use srfi-69)
在 CHICKEN 5(我强烈建议您安装,因为它有很多改进并且是当前支持的主要版本)中,SRFI-69 不再是核心的一部分,但可以通过 as an egg 安装chicken-install
。在那里,use
不再存在。相反,在安装 egg 之后,您可以像这样导入它:
(import srfi-69)
顺便说一句,SRFI 是 "requests for implementation",并不是每个 Scheme 系统都会实现每个 SRFI。有时是因为人们反对 SRFI(有些是有争议的),有时是因为没有人接受它,有时是因为 SRFI unimplementable/does 对特定方案有意义(例如,C FFI 在JVM 上的方案 运行).
您必须检查您的 Scheme 的功能,看看是否包含您想要使用的 SRFI。请注意,对于 CHICKEN,许多 SRFI 是通过 egg 在核心之外实现的。 CHICKEN 核心仅包含少数 SRFI,如 0、1、2、4、6、8、9、11、13、14、15、16、17、23、30、39、55、69。在 CHICKEN 5 中, SRFI 1、13、14 和 69 已从核心中取出,因为它们可以很容易地在外部实现。查看 list of eggs 了解更多 SRFI 实现。
编辑:我忘了,有一个 wiki page 试图详尽列出所有支持的 SRFI。它尚未针对 CHICKEN 5 进行更新,但列表最终应该是相同的,因为越来越多的鸡蛋从 CHICKEN 4 移植到 5(甚至变得更长,因为 CHICKEN 5 看到了很多新的发展)。
我正在尝试声明一个哈希 table。基于 this SRFI 我相信 (define x (make-table))
的形式应该导致正确的行为;但是,我收到以下错误。
CHICKEN
(c) 2008-2017, The CHICKEN Team
(c) 2000-2007, Felix L. Winkelmann
Version 4.12.0 (rev 6ea24b6)
linux-unix-gnu-x86-64 [ 64bit manyargs dload ptables ]
compiled 2017-02-19 on yves.more-magic.net (Linux)
#;1> (make-table)
Error: unbound variable: make-table
Call history:
eval.scm:211: ##sys#get
eval.scm:218: values
eval.scm:255: ##sys#alias-global-hook
modules.scm:769: ##sys#qualified-symbol?
modules.scm:777: ##sys#active-eval-environment
modules.scm:777: g2354
modules.scm:784: mrename
modules.scm:762: ##sys#current-module
eval.scm:259: ##sys#symbol-has-toplevel-binding?
eval.scm:265: ##sys#symbol-has-toplevel-binding?
library.scm:1668: after
eval.scm:857: g1785
<eval> (make-table)
library.scm:4051: ##sys#get-call-chain
library.scm:3834: ##sys#make-vector
library.scm:1371: ##sys#allocate-vector <--
此外,我在其他功能上也遇到了类似的错误。会不会是我解释器安装错误?
CHICKEN 不附带 SRFI 90,据我所知,到目前为止也没有人为它制作鸡蛋。不过,更早且更常用的哈希 table 库 SRFI-69 是 part of core。它也默认不可用,您需要像这样使用它:
(use srfi-69)
在 CHICKEN 5(我强烈建议您安装,因为它有很多改进并且是当前支持的主要版本)中,SRFI-69 不再是核心的一部分,但可以通过 as an egg 安装chicken-install
。在那里,use
不再存在。相反,在安装 egg 之后,您可以像这样导入它:
(import srfi-69)
顺便说一句,SRFI 是 "requests for implementation",并不是每个 Scheme 系统都会实现每个 SRFI。有时是因为人们反对 SRFI(有些是有争议的),有时是因为没有人接受它,有时是因为 SRFI unimplementable/does 对特定方案有意义(例如,C FFI 在JVM 上的方案 运行).
您必须检查您的 Scheme 的功能,看看是否包含您想要使用的 SRFI。请注意,对于 CHICKEN,许多 SRFI 是通过 egg 在核心之外实现的。 CHICKEN 核心仅包含少数 SRFI,如 0、1、2、4、6、8、9、11、13、14、15、16、17、23、30、39、55、69。在 CHICKEN 5 中, SRFI 1、13、14 和 69 已从核心中取出,因为它们可以很容易地在外部实现。查看 list of eggs 了解更多 SRFI 实现。
编辑:我忘了,有一个 wiki page 试图详尽列出所有支持的 SRFI。它尚未针对 CHICKEN 5 进行更新,但列表最终应该是相同的,因为越来越多的鸡蛋从 CHICKEN 4 移植到 5(甚至变得更长,因为 CHICKEN 5 看到了很多新的发展)。