在Chicken Scheme中过滤未绑定的内容。为什么这样做?

4

我正在学习Chicken Scheme。下面的代码在 mit-scheme REPL 中可以运行, 但是在 csi 中不行。虽然 csi 文档中定义了 filter,但是当我运行下面的代码时出现了未绑定变量错误。

    CHICKEN
(c) 2008-2015, The CHICKEN Team
(c) 2000-2007, Felix L. Winkelmann
Version 4.10.0 (rev b259631)
macosx-unix-clang-x86-64 [ 64bit manyargs dload ptables ]
compiled 2015-08-04 on yves.more-magic.net (Linux)

#;1> (filter odd? '(1 2 3 ))

Error: unbound variable: filter

    Call history:

    <syntax>          (filter odd? (quote (1 2 3)))
    <syntax>          (quote (1 2 3))
    <syntax>          (##core#quote (1 2 3))
    <eval>    (filter odd? (quote (1 2 3))) <--
#;1>
2个回答

4

不确定你指的是哪个filter过程,但似乎文档中列出的其中一个filter只在宏展开期间可用:

http://api.call-cc.org/doc/bindings#sec:filter

你可以在运行时使用SRFI-1库中定义的filter。要使用它,只需添加以下内容:

(use srfi-1)


4

filtersrfi-1模块中定义,因此您必须首先加载该模块以使其可用:

CHICKEN
(c) 2008-2014, The Chicken Team
(c) 2000-2007, Felix L. Winkelmann
Version 4.9.0.1 (stability/4.9.0) (rev 8b3189b)
linux-unix-gnu-x86-64 [ 64bit manyargs dload ptables ]
bootstrapped 2014-06-07

#;1> (use srfi-1)
; loading /var/lib//chicken/7/srfi-1.import.so ...
; loading library srfi-1 ...
#;2> (filter odd? '(1 2 3 ))
(1 3)
#;3>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接