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来确保:)