Сортировка по схеме R5RS в DrRacket - PullRequest
0 голосов
/ 21 октября 2018

Я изучаю схему, используя DrRacket версии 7.0.

Я скопировал и изменил следующую процедуру из этого SO ответа .

#lang racket

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

Иэто работает отлично.

Теперь я должен изменить инструкцию #lang racket на эту #lang r5rs.

И DrRacket жалуется на следующую ошибку:

sort: несвязанный идентификатор в: sort

Я забыл добавить что-нибудь в DrRacket (библиотеки, модули и т. д.)?Или, может быть, sort недоступен в R5RS.

1 Ответ

0 голосов
/ 21 октября 2018

Согласно отчету R5RS такой вещи, как sort, не существует.Вы можете получить эталонную реализацию для sort из SRFI-95 Сортировка и объединение .Он не на 100% совместим с #lang racket.R5RS не имеет библиотек, поэтому переносимый способ будет load или встроенным.

R6RS заменил R5RS, и в его стандартной библиотеке list-sort.

R7RS-Large, который еще не полностью ратифицирован, использует SRFI-132 в качестве библиотеки сортировки (scheme sort), которая также имеет list-stable-sort, что аналогично R6RS list-sort,

В Racket вы можете смешивать и сопоставлять библиотеки из всех языков, которые он поддерживает, но он не работает для списков, которые реализованы по-разному, и это блокировка. Зависимость от библиотеки разных языков означает, что вы не можете запуститькод с другими реализациями, такими как Ikarus и Chez.

...