Scheme 从外部文件加载过程时出现未绑定变量错误
我正在Cloud9托管的工作区上使用Chicken Scheme 4.9.0.1,该工作区是从源代码构建的 我试着用这个(我主要用python编写代码,所以我为奇怪的parens语法道歉): 其中指数为:Scheme 从外部文件加载过程时出现未绑定变量错误,scheme,chicken-scheme,Scheme,Chicken Scheme,我正在Cloud9托管的工作区上使用Chicken Scheme 4.9.0.1,该工作区是从源代码构建的 我试着用这个(我主要用python编写代码,所以我为奇怪的parens语法道歉): 其中指数为: (define (exponent num pow) (if (equal? pow 1) num (* num (exponent num (- pow 1)) ) ) ) 但它给了我以下错误: Started /home/u
(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) <--
Started/home/ubuntu/workspace/test.scm
鸡
(c) 2008-2014年,鸡队
(c) 2000-2007年,费利克斯·L·温克尔曼
版本4.9.0.1(稳定性/4.9.0)(版本8b3189b)
linux-unix-gnu-x86-64[64位多字节数据加载ptables]
自举2014-06-07
; 正在加载/home/ubuntu/workspace/project1/src/test.scm。。。
; 正在加载../src/Basics.scm。。。
错误:未绑定变量:pow
通话记录:
[附加](cons项目(反向目标))
[附加](反向目标)
[附加](反向(cons项目(反向目标)))
[附加](cons项目(反向目标))
[附加](反向目标)
[附加](反向(cons项目(反向目标)))
[附加](cons项目(反向目标))
[附加](反向目标)
[附加](反向(cons项目(反向目标)))
[附加](cons项目(反向目标))
[附加](反向目标)
(印刷品(指数5-2))
(指数5.2)
(印刷品(指数5-2))
(指数5.2)
[指数](等于?功率1)对我来说很好。在Ubuntu上使用相同的版本编译了Chicken,具体版本如下
你的通话记录看起来很奇怪。更具体地说:
<eval> [append] (reverse target)
<syntax> (print (exponent 5 2))
结果应该与预期内容相符。我觉得效果不错。我用csi
试过,然后用csc
试过编译。我甚至复制了你的load
语句所暗示的目录结构,看看这是否与此有关。真的吗?哎哟这是否意味着我编译鸡肉的方式有问题?我不知道。我使用了Debian存储库中的CHICKEN build。哇,非常感谢你的脚本,Stephen,事实证明,出于某种原因,命令(加载模块)
加载了一个完全不同的命令,它也在Basics.scm
中,并且干扰了应该执行的命令。注释掉有问题的命令修复了这个问题。唯一的问题是为什么一个不相关的命令会以这种方式混在调用堆栈中……我也遇到了这个问题。我不确定原因是什么。如果我删除了外文声明,问题就会消失。我对外国兰姆达也有同样的看法。
<eval> [append] (reverse target)
<syntax> (print (exponent 5 2))
(with-input-from-file "../src/Basics.scm"
(lambda ()
(display (read))))