在DrRacket中使用R5RS方案排序

时间:2018-10-21 14:02:25

标签: sorting scheme racket

我正在使用DrRacket 7.0版进行学习。

我已从此SO answer复制并修改了以下过程。

#lang racket

(define sort-asc-by-second
  (lambda (lst)
    (sort lst
          (lambda (x y) (< (cdr x) (cdr y))))))

它运行完美。

现在,我用此#lang racket更改了#lang r5rs指令。

DrRacket抱怨以下错误:

  

sort:排序中的未绑定标识符

我是否忘记在DrRacket中添加某些内容(库,模块等)?也许sort在R5RS中不可用。

1 个答案:

答案 0 :(得分:2)

根据R5RS report,没有os.environ['REDIS_URL']这样的东西。您可以从SRFI-95 Sorting and merging获取sort的参考实现。它与sort并非100%兼容。 R5RS没有库,因此可移植的方法是对其进行#lang racket或内联。

R6RS取代了R5RS,并且它的标准库中有list-sort

尚未完全批准的R7RS-Large使用SRFI-132作为排序库load,它也具有(scheme sort)与R6RS list-stable-sort相同。

在Racket中,您可以混合和匹配其支持的所有语言的库,但是它不适用于以不同方式实现的列表,并且是锁定的。依赖于其他语言的库意味着您无法使用其他实现,例如Ikarus和Chez。