【问题标题】:How to terminate a scheme program early? (Is there an "exit"?)如何提前终止计划程序? (有“出口”吗?)
【发布时间】:2019-09-27 02:08:28
【问题描述】:

我想要类似的东西:

(cond ((< x 3) (and (display "Error Message") (exit)))

(else (foo y))

换句话说,我想显示一条消息并在满足条件时终止。我怎样才能做到这一点?有没有这样的退出功能?

提前致谢!

【问题讨论】:

    标签: scheme exit


    【解决方案1】:

    SRFI 23 提供error。对于错误情况,这样做比调用exit 要好得多,因为它使其他代码可以捕获错误并进行错误处理。 (无论如何,有些实现将exit 实现为例外,但这并不能说明我认为使用error 更合适。)

    SRFI 34 提供了更完善的异常工具,甚至比error 更合适。

    【讨论】:

      【解决方案2】:

      R5RS Scheme 和之前的版本不需要退出函数,尽管大多数实现都提供了退出函数。 R6RS Scheme 确实需要一个退出函数。即使没有退出功能,通常也可以安排程序的控制流,使其在完成时“落到尽头”。如果您需要一个出口,而您的实现没有提供出口,您可以使用 call/cc 构建自己的出口。

      【讨论】:

        【解决方案3】:

        在 ChezScheme 上我输入:

        (exit)
        

        与第一次退出 vim 相比,我花费的时间要少得多。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-08-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-02-19
          • 2017-03-11
          • 1970-01-01
          相关资源
          最近更新 更多