Я использую Chicken Scheme 4.9.0.1 на облачном рабочем месте Cloud9, построенном из исходного кода.Несвязанная переменная ошибка при загрузке процедуры из внешнего файла
Я пытался его с этим (я в основном коде с питоном, поэтому я извиняюсь за странный синтаксис Паренс):
(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, u петь их онлайн REPL), и это сработало. Когда я добавил код непосредственно в файл, над которым работал, не загружая его из отдельного файла, он работает.
Почему он дает эту несвязанную переменную ошибку только при загрузке из отдельного файла?
Это прекрасно работает для меня. Я попробовал его с 'csi', а затем попытался скомпилировать его с' csc'. Я даже воспроизвел структуру каталогов, которую подразумевал ваш оператор 'load', чтобы узнать, связано ли это с этим. –
Действительно? Уч. Означает ли это, что что-то не так с тем, как я собрал CHICKEN? – theblacksquid
Я понятия не имею. Я использовал сборку CHICKEN из репозитория Debian. –