【问题标题】:filter unbound in chicken scheme. Why?在鸡计划中过滤未绑定。为什么?
【发布时间】:2015-09-07 04:45:42
【问题描述】:

我从鸡肉计划开始。下面的代码适用于 mit-scheme repl,但不适用于 csi。 csi 在文档中定义了过滤器,但是当我运行下面的代码时出现未绑定的变量错误。

    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>

【问题讨论】:

    标签: filter scheme chicken-scheme


    【解决方案1】:

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

    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>
    

    【讨论】:

      【解决方案2】:

      不确定您指的是哪个filter 过程,但似乎文档中列出的filter 之一仅在宏扩展期间可用:

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

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

      (use srfi-1)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-01-16
        • 2017-12-29
        相关资源
        最近更新 更多