gpt4 book ai didi

scheme - 从外部文件加载过程时出现未绑定(bind)变量错误

转载 作者:行者123 更新时间:2023-12-04 19:57:51 25 4
gpt4 key购买 nike

我在 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)上尝试了相同的程序,并且成功了。当我将代码直接添加到我正在处理的文件中而不从单独的文件加载它时,它就可以工作了。

为什么仅当它从单独的文件加载时才给出未绑定(bind)变量错误?

最佳答案

对我来说效果很好。在 Ubuntu 上使用相同版本编译 Chicken,直到具体修订。

您的通话记录看起来很奇怪。更具体地说:

    <eval>    [append] (reverse target)
<syntax> (print (exponent 5 2))

[append](反向目标) 部分看起来很奇怪。您的指数函数(如所述)不会调用它。即使假设历史是错误的并且实际上是在 print 函数中,我已经检查了 library.scm 并且该历史也没有意义。

这让我相信正在加载的 Basics.scm 文件出于某种原因不是您期望的文件,您最终得到了一个不同的、无法工作的 版本>指数

您可以让 Chicken 显示文件的内容来确定。比如:

(with-input-from-file "../src/Basics.scm"
(lambda ()
(display (read))))

结果应该符合预期的内容。

关于scheme - 从外部文件加载过程时出现未绑定(bind)变量错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30067062/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com