如何检测 MIT Scheme 的版本?

How to detect version of MIT Scheme?

是否有一种方法可用于检测一段 Scheme 代码中使用的 MIT Scheme 版本?

例如,我可能需要一段代码来确定它是由 MIT Scheme 9.1 还是 MIT Scheme 9.2 解释的,并据此采取行动。

也许存在一个程序(例如(interpreter-version))returnsMIT Scheme的版本号?

下面是一些开源项目用来检测MIT Scheme版本的方法:

  • SLIB project (file: mitscheme.init使用的方法):

    (get-subsystem-version-string "Release")
    

    示例 return 值:"9.2"

  • SLIME project (file: contrib/swank-mit-scheme.scm使用的方法):

    (get-subsystem-version "Release")
    

    这return是列表中的版本号。例如,如果您使用的是 MIT Scheme 版本 10.1.10,则 return 值将为 '(10 1 10)。用法示例:

    (if (>= (car (get-subsystem-version "Release"))
            9)
      'do-something-if-version-9-and-above
      'otherwise-do-this-if-below-version-9)
    

注意:此答案中使用的过程未记录。 get-subsystem-versionget-subsystem-version-string 都在 MIT Scheme 的 src/runtime/system.scm 文件中定义。

记录的方法是(identify-world)

mit-scheme-user chapter 2.1