Chicken Scheme:make-table未绑定变量

时间:2018-11-19 09:17:18

标签: chicken-scheme

我正在尝试声明一个哈希表。基于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         <--

此外,其他功能也出现类似错误。

1 个答案:

答案 0 :(得分:2)

CHICKEN不随附SRFI 90,据我所知,到目前为止,也没有人为它做过鸡蛋。但是,更早或更常用的哈希表库SRFI-69是part of core。默认情况下它也不可用,您需要像这样使用它:

(use srfi-69)

在CHICKEN 5(我强烈建议您安装它,因为它有很多改进并且是当前受支持的主要版本)中,SRFI-69不再是内核的一部分,而是可以通过{{ 1}}。那里,chicken-install不再存在。相反,在安装鸡蛋之后,您可以像这样导入它:

use

顺便说一句,SRFI是“实施请求”,并非每个Scheme系统都实现每个SRFI。有时是因为人们反对SRFI(有些人有争议),有时是因为没有人了解它,有时是因为SRFI无法实现/对于特定的方案没有意义(例如,C FFI在Scheme运行中没有意义)在JVM上)。

您必须检查自己的Scheme功能,以查看是否包含要使用的SRFI。请注意,对于CHICKEN,许多SRFI是通过鸡蛋在核心外部实现的。 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已从核心中删除,因为它们可以很容易在外部实现。检查as an egg了解更多SRFI实施。

编辑:我忘了,有一个list of eggs致力于详尽列出所有受支持的SRFI。尚未对CHICKEN 5进行过更新,但是最终清单应该是相同的,因为越来越多的鸡蛋从CHICKEN 4移植到5(鉴于CHICKEN 5看到了许多新的发展,甚至更长)。 >