LINUX.ORG.RU
 
Begemoth

Racket 5.2


0

1

Представлена версия 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


[#] Ответ на: комментарий от ugoday 11.11.2011 13:24:00  
dave

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

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

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

***** ()
[#] Ответ на: комментарий от dave 11.11.2011 14:04:47  
dave

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

***** ()
[#]  
ins3y3d

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

**** ()
[#] Ответ на: комментарий от dave 11.11.2011 10:19:27  

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

anonymous ()
[#] Ответ на: комментарий от ugoday 11.11.2011 13:24:00  

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

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

anonymous ()