什么扩展允许访问r5rs中的时间功能?

时间:2015-03-09 01:02:30

标签: time scheme r5rs

A 4-year-old old post表示可以使用r5rs语言访问当前秒和相关函数。

这就是我要问的原因:我是Racket新手的高中老师,我们正在使用r5rs语言。我想通过一个不需要参数的函数开始向学生介绍函数。我遇到的例子是每小时几分钟。但我不知道如何在r5rs程序中识别这些功能。

感谢任何有用的建议。

1 个答案:

答案 0 :(得分:1)

首先,为什么不使用#lang racket代替r5rs?球拍非常注重教育。它甚至还有各种教学语言,可用于How to Design Programs教科书(或其second edition,目前仍在使用)。


Racket的R 5 RS的实现是有意限制的 - 它通常不打算用于任何实际的事情,因为Racket本身已经超出了它的Scheme根源。它可以作为教学工具使用,但正如您所见,它不包含任何特殊扩展(超出一小组内部形式)。

如果您真的对使用R 5 RS方案感兴趣,则存在与Racket捆绑在一起的SRFI 19: Time Data Types and Procedures实现。 R 5 RS没有模块系统,因此在纯Scheme中没有正式指定的加载外部库的方法。您需要使用Racket #%require扩展来加载SRFI实现:

(#%require srfi/19)

这将使您可以访问所有SRFI 19函数和值。

您也可以在Racket本身中包含您想要的功能,因为这些语言实际上是可互操作的。要包含current-seconds,您需要执行以下操作:

(#%require (only racket/base
                 current-seconds))

但是,如果您打算这样做,使用r5rs语言似乎毫无意义。只需使用racketracket/base代替。