LINUX.ORG.RU

Racket 5.2

 , , , ,


0

0

Представлена версия 5.2 языка программирования Racket (ранее PLT Scheme).

Новое в этой версии:

  • Новая библиотека `db', предоставляющая высокоуровневый интерфейс к популярным РСУБД: MySQL, SQLite, PostgreSQL, а также другим через ODBC.
  • Новая коллекция XREPL, предоставлящая вспомогательные команды для цикла чтения-выполнения-печати (REPL) Racket. Она будет полезна людям, которые используют консольную версию Racket и альтернативные редакторы.
  • Коллекция `plot' переписана на Racket, теперь она поддерживает вывод в PDF, логарифмические оси, гистограммы и многое другое.
  • DrRacket использует традиционные сочетания клавиш: C-t создает новую вкладку, C-w закрывает вкладку, C-r выполняет определения.
  • Typed Racket:
    • Typed Racket предоставляет средства для статической отладки производительности: показывается какой код будет оптимизирован, а какой нет.
    • Более интуитвные типы в выводе REPL и сообщениях об ошибках.
    • Поддерживается определение функций с необязательными аргументами с таким же синтаксисом, как в Racket.
  • Исправлено несколько проблем с графическим интерфейсом, в том числе с Ubuntu 11.10 (GTK+3) и 64-битной Mac OS X.
  • Внуртренние определения теперь имеют семантику `let*' если не содержат обратных ссылок, это исключает потерю проиводительности при использовании внутренних определений вместо `let' и изменяет смысл программ, которые захватывают продолжения во внутренних определениях. Использование внутренних определений теперь считается предпочтительным стилем.

>>> Сайт Racket

★★★★★

Проверено: Shaman007 ()
Последнее исправление: Shaman007 (всего исправлений: 1)

Ответ на: комментарий от ugoday

> Полноценной реализации продолжений в CL мешает unwind-protect. Полезная, между прочем штука.

Забавно, но в F# асинхронные вычисления, построенные на продолжениях, вполне успешно обходят try-with, аналог лисповского unwind-protect. Я не вдавался сильно в эту тему. Может быть, мешают рестарты?

Как обойти unwind-protect - более-менее понятно. Нужно хранить второе продолжение для обработки исключительных ситуаций, т.е. просигналенных ошибок. Тогда будет не одно продолжение, а, как минимум, два (в F# Async их три). Мне непонятно, что делать с рестартами.

dave ★★★★★
()
Ответ на: комментарий от dave

Тьфу, черт. Аналогом unwind-protect будет try-finally.

dave ★★★★★
()

Отличная новость, обновлюсь

ins3y3d ★★★★★
()
Ответ на: комментарий от dave

ну то есть факт в том, что в рамках стандарта продолжения реализовать нельзя

anonymous
()
Ответ на: комментарий от ugoday

> Полноценной реализации продолжений в CL мешает unwind-protect.

Барьеры эту проблему (и все подобные) решают.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.