Scheme 为什么此方案代码可以';无法解决spoj的第一个问题?
问题在于: 我的方案是:Scheme 为什么此方案代码可以';无法解决spoj的第一个问题?,scheme,Scheme,问题在于: 我的方案是: (define (main) (let ((line (read-line))) (if (or (eof-object? line) (string=? line "42")) (void) (begin (display line) (newline) (main))))) (main) 它报告 运行时错误(NZEC
(define (main)
(let ((line (read-line)))
(if (or
(eof-object? line)
(string=? line "42"))
(void)
(begin
(display line)
(newline)
(main)))))
(main)
它报告
运行时错误(NZEC)
但我不知道为什么它是错的。在提交之前,您应该安装guile并尝试您的代码。默认情况下,Guile没有可用的
读取行
。您需要将其添加为第一行:
(use-modules (ice-9 rdelim))
因此,guile发布了一个错误,并将一个非零值返回给父进程,这反过来表明程序没有正常终止。然后,SPOJ将作为NZEC报告
guile错误如下所示:
sylwester@sylhp ~> guile test.scm
ERROR: Unbound variable: read-line
无论何时您获得NZEC,您都应该尝试在本地运行它以查找错误。您无法提供
read display
(我猜它再次调用main
或其他内容)@Sylvester,谢谢,已修复。但还是犯了同样的错误谢谢你。我在本地机器上使用drRacket。我不熟悉scheme,并且认为它们是一样的:(如果将R5RS作为语言,它们非常相似。例如(void)
如果语言是R5RS,则在DrRacket中不起作用。(您得到“void:unbound identifier in module in:void”)您也应该尝试使用guile来确保:)