【发布时间】:2015-05-06 03:40:20
【问题描述】:
我在 Cloud9 托管工作区上使用 Chicken Scheme 4.9.0.1,从源代码构建。
我正在尝试使用这个(我主要使用 python 编写代码,所以我为奇怪的括号语法道歉):
(define load-module
(lambda (filepath)
(begin
(load filepath)
)
)
)
(define print
(lambda (command)
(begin
(display command)
(newline)
)
)
)
(load-module "../src/Basics.scm")
(print (exponent 5 2))
指数在哪里:
(define (exponent num pow)
(if (equal? pow 1)
num
(* num (exponent num (- pow 1))
)
)
)
但它给了我以下错误:
Started /home/ubuntu/workspace/test.scm
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
; loading /home/ubuntu/workspace/project1/src/test.scm ...
; loading ../src/Basics.scm ...
Error: unbound variable: pow
Call history:
<eval> [append] (cons item (reverse target))
<eval> [append] (reverse target)
<eval> [append] (reverse (cons item (reverse target)))
<eval> [append] (cons item (reverse target))
<eval> [append] (reverse target)
<eval> [append] (reverse (cons item (reverse target)))
<eval> [append] (cons item (reverse target))
<eval> [append] (reverse target)
<eval> [append] (reverse (cons item (reverse target)))
<eval> [append] (cons item (reverse target))
<eval> [append] (reverse target)
<syntax> (print (exponent 5 2))
<syntax> (exponent 5 2)
<eval> (print (exponent 5 2))
<eval> (exponent 5 2)
<eval> [exponent] (equal? pow 1) <--
我在不同的方案实施(biwascheme,使用他们的在线 REPL)上尝试了相同的过程,并且成功了。当我将代码直接添加到我正在处理的文件中而不从单独的文件中加载它时,它就可以工作了。
为什么只有从单独的文件加载时才会给出未绑定变量错误?
【问题讨论】:
-
它对我来说很好用。我用
csi尝试了它,然后尝试用csc编译它。我什至复制了您的load声明所暗示的目录结构,看看是否与它有关。 -
真的吗?哎哟。这是否意味着我编译 CHICKEN 的方式有问题?
-
我不知道。我使用了 Debian 存储库中的 CHICKEN 构建。
标签: scheme chicken-scheme