在调试方面需要帮助:"对象(引用test-divisor),...不是标识符。"

时间:2014-10-04 00:20:55

标签: scheme

我是计划的初学者。

我在下面写了一个简单的查找除数的程序,并尝试将其加载到scheme intepreter中,但只得到一个没有行号的简单警告。我可以知道出了什么问题吗?感谢。

;            Loading "test_euler3.scm"...
;The object (quote test-divisor), passed as an argument to identifier->symbol, is not an identifier.
(define (find-divisor' test-divisor n)
  (cond ((= test-divisor 1)
     1)
    ((divides? n test-divisor)
     test-divisor)
    (else
     (find-divisor' (- test-divisor 1) n))))

1 个答案:

答案 0 :(得分:2)

与Rptx的评论一样,find-divisor'不是有效的标识符,因为'不是有效的标识符字符。如果您确实想要使用它,则必须使用|find-divisor'|

之类的内容来转义标识符

但最好只坚持使用有效标识符的字符。哎呀,只要使用智能引用(例如,find-divisor’)或素数(例如,find-divisor′),如果你想要看起来的内容,如find-divisor'。但是,我不会保证使用智能引号的任何代码的可读性。 :-P