【问题标题】:Why this scheme code can't resolve the first one of spoj?为什么这个方案代码不能解析spoj的第一个?
【发布时间】:2014-05-27 08:17:31
【问题描述】:

问题出在这里:http://www.spoj.com/problems/TEST/

而我的方案解决方案是:

(define (main) 
  (let ((line (read-line)))
    (if (or 
          (eof-object? line)
          (string=? line "42"))
        (void)
        (begin
          (display line)
          (newline)
          (main)))))

(main)

它报告

运行时错误(NZEC)

但我不知道为什么会出错。

【问题讨论】:

  • 你忘了提供read-display(我猜它又叫main什么的)
  • @Sylwester,谢谢,已修复。但仍然出现同样的错误

标签: scheme


【解决方案1】:

您应该在提交之前安装 guile 并尝试您的代码。 Guile 默认没有read-line。您需要将此添加为第一行:

(use-modules (ice-9 rdelim))

所以发生的事情是 guile 发布了一个错误并将一个非零值返回给父进程,这反过来表明程序没有正常终止。然后 SPOJ 将报告为 NZEC。

诡计错误如下所示:

sylwester@sylhp ~> guile test.scm
ERROR: Unbound variable: read-line

每当您获得 NZEC 时,您都应该尝试在本地运行它以查找错误。

【讨论】:

  • 谢谢。我在本地机器上使用 drRacket。我是新来的计划,并认为它们是相同的:(
  • 如果你把 R5RS 作为语言,它们非常相似。例如,如果语言是 R5RS,(void) 将无法在 DrRacket 中工作。 (你得到“void: unbound identifier in module in: void”)你也应该尝试在 guile 中运行以确保:)
猜你喜欢
  • 2023-04-05
  • 2021-05-20
  • 2011-05-26
  • 2012-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多