命名空间如何在 Chicken Scheme 中工作?我现在正在使用parley
egg,当我定义一个名为 eg 的函数时read
,由于名称冲突而导致错误(实际上,因为我read
覆盖了parley
自己的read
,并且它被错误的类型调用。
这是代码:
(use parley)
(define (read p) p) ; This `read` function conflicts.
(let loop ((l (parley "> ")))
(if (or (eof-object? l)
(equal? l "quit"))
(print "bye!")
(begin
(printf "you typed: ~s~%" l)
(loop (parley "> ")))))
我怎样才能避免这样的碰撞?
更新
我已经减少了重现这一点所需的代码:
(use parley)
(define (read p) p)
这会出现以下错误:
Error: illegal non-atomic object: #<input port "readline.scm">
显然,我的read
功能与parley
read
. 但我不知道如何在不重命名函数的情况下避免这种情况。