Chicken Scheme:使表成为未绑定变量



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

此外,我在其他函数中也遇到了类似的错误。有没有可能我安装的解释器不正确?

鸡肉没有SRFI 90,据我所知,到目前为止也没有人为它做鸡蛋。不过,一个早期且更常用的哈希表库SRFI-69是核心的一部分。默认情况下也不可用,您需要这样使用它:

(use srfi-69)

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

(import srfi-69)

顺便说一句,SRFI是"实施请求",并不是每个Scheme系统都实施每一个SRFI。有时是因为人们反对SRFI(有些是有争议的(,有时是因为没有人参与其中,有时是由于SRFI不可实现/对特定的Scheme有意义(例如,在JVM上运行的Scheme中,C FFI没有意义(。

你必须检查你的计划的功能,看看是否包括你想使用的SRFI。注意,对于鸡肉,许多SRFI是通过鸡蛋在核心之外实现的。鸡核心只包括少数SRFI,如0、1、2、4、6、8、9、11、13、14、15、16、17、23、30、39、55、69。在鸡5中,SRFI 1、13、14和69已经从核心中取出,因为它们可以很容易地在外部实现。查看鸡蛋列表,了解更多SRFI实现。

编辑:我忘了,有一个wiki页面努力详尽地列出所有支持的SRFI。它还没有为鸡5更新,但列表最终应该是一样的,因为越来越多的鸡蛋从鸡4移植到鸡5(甚至变得更长,因为鸡5看到了很多新的发展(。

相关内容

  • 没有找到相关文章

最新更新