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 ()

Racket 5.2

Этот язык Microsoft активно использует в общении с теми, кто платит лицензионный отчисления за андроид.

lmtea ()
Ответ на: комментарий от aho

со стороны Racket выглядит как Qt для лиспа

Скорее:

«ЯП C++» vs «ЯП C++ плюс Qt moc» == «ЯП CL» vs «ЯП Racket»

SteveBallmer ()

Ой, я прослоупочил с новостью :)

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

> Смотря что понимать под Qt :)

в данном случае я подразумевал IDE + тулзы, набор библиотек как таковые и расширение оригинально ЯП

aho ()
Ответ на: комментарий от beka

Места слишком много занимает :)

А вообще, он больше не считается православным правоверными схемерами.

buddhist ★★★★★ ()

блин, такое событие и в мининовости?

Reset ★★★★★ ()

У меня два вопроса:

  • Racket — это всё-таки Scheme или уже нет?
  • Правда ли, что Racket превосходит CL в области метапрограммирования?
CARS ★★★★ ()
Ответ на: комментарий от CARS

Racket — это всё-таки Scheme или уже нет?

racket это racket, но, выбирая соответствующий #lang, можно писать и на схеме

Правда ли, что Racket превосходит CL в области метапрограммирования?

по мне так однохренственно

Reset ★★★★★ ()

Замечательная вещь. Пожелаю ей успехов ей в развитии.

Hexs ()
Ответ на: комментарий от CARS

Правда ли, что Racket превосходит CL в области метапрограммирования?

Да, в CL нет аналога #lang, нет гигиеничных макросов, макросы работают со списакми, а не с синтаксическими объектами. Специалисты по Racket могут ещё дополнить про многостадийность.

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

гигиенические макросы и полноценные продолжения - это, конечно, хорошо, но:

Расскажите лучше, насколько юзабельны биндинги к GUI, про их возможности и про то, насколько это все вырвиглазно будет смотреться.

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

> в венде смотрится как родной

он и есть родной

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

> возможно я не прав, но со стороны Racket выглядит как Qt для лиспа

Если вы под “лиспом” понимаете язык Common Lisp, то вы не правы, т.к. Racket - не Common Lisp. Если же семейство языков с синтаксисом основанным на символьных выражениях, то я просто не понимаю о чём речь. Библиотека для языков объединённых чуть менее чем ничем кроме синтаксиса?

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

planet. Только там библиотек мало и ЕМНИП падает частенько, зато в отличие от quicklisp разбирается в версиях.

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

> Если вы под “лиспом” понимаете язык Common Lisp,

нет

то я просто не понимаю о чём речь. Библиотека для языков объединённых чуть менее чем ничем кроме синтаксиса?


не просто библиотека - а все в одном, от IDE до библиотек на все случаи жизни

aho ()
Ответ на: комментарий от CARS

> Правда ли, что Racket превосходит CL в области метапрограммирования?

Нет, оно просто другое. Есть высокоуровневая система ограниченной ценности, навязываемая всем без разбору независимо от сложности задачи. Единственная бесспорно полезная фича - гигиенические макросы, но они в CL есть в виде библиотеки строк тридцать длинной. Кто пишет макросы в Racket, настоятельно рекомендую использовать mzlib/defmacro.

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

Ясно. Значит ошибаетесь. т.к. Qt - это библиотеки и IDE для конкретного языка, а не целого семейства. Как, в прочем и Racket - библиотеки и IDE для конкретного языка Racket. Но не для целого семейства.

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

> т.к. Qt - это библиотеки и IDE для конкретного языка, а не целого семейства. Как, в прочем и Racket - библиотеки и IDE для конкретного языка Racket. Но не для целого семейства.

опс, извиняюсь - неправильно процитировал, нет, конечно же не для всего семейства языков лисп, именно связка язык + все необходимое под него мне напомнила Qt

aho ()
Ответ на: комментарий от naryl

настоятельно рекомендую использовать mzlib/defmacro

Размораживаться будем или ещё подождём?

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

Ну, мне он по этой же причине понадобился. Хороший инструмент для обучения.

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

> Есть высокоуровневая система ограниченной ценности, навязываемая всем без разбору независимо от сложности задачи.

Никто не навязывает.

но они в CL есть в виде библиотеки строк тридцать длинной.

Нету. Более того - реализовать аналогичную Racket гигиену в CL без полного переписывания ридера, экспандера, комплиятора и нарушения стандарта - вообще невозможно.

Кто пишет макросы в Racket, настоятельно рекомендую использовать mzlib/defmacro.

Зачем?

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

> Более того - реализовать аналогичную Racket гигиену в CL без полного переписывания ридера, экспандера, комплиятора и нарушения стандарта - вообще невозможно.

не нужно в CL

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

не нужно в CL

Типичная мантра коммон лисперов, гигиена им не нужна, продолжения им не нужны, статическая типизация им не нужна, вообще-то всё чего нет в CL - не нужно.

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

> гигиена им не нужна

right

продолжения им не нужны


Почему же, от продолжений на урoвне языка, не отказался бы. Хорошая весч.

статическая типизация


в CL «почти» не нужна, для других случаев есть декларации

вообще-то всё чего нет в CL - не нужно


(with-troll-face ()
'почти-все-есть)

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

>В CL нету continuations?

В CL нет «нативных» продолжений, но:
1. Есть cl-cont (библиотека для продолжении)
2. ЕМНИП в книге On Lisp одна из глав посвящена реализации продолжений

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

Спасибо, понял.

И тем не менее: «наитивные» продолжения («встроенные» в язык) более удобны, не?

И CL-спецы вроде бы согласны:

gensym

Почему же, от продолжений на урoвне языка, не отказался бы. Хорошая весч.

OldFatMan ()
Ответ на: комментарий от beka

В CL нет «нативных» продолжений, но: 1, 2

Насколько я понимаю продолжения, полноценно их нельзя реализовать в виде библиотеки (разве что довольно тяжеловесно в виде getcontext/setcontext).

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

Begemoth

Насколько я понимаю продолжения, полноценно их нельзя реализовать в виде библиотеки

Это признают и авторы cl-cont, вот цитата из их FAQ-a:

What subset of Common Lisp is supported by cl-cont?

All special operators listed under http://www.lisp.org/HyperSpec/Body/sec_3-1-2-1-2-1.html are supported with the following limitation: call/cc cannot appear within the body of catch, throw, progv, or unwind-protect.

Because compilers often expand standard macros into non-standard CL code, supporting all special operators is not sufficient to support all of Common Lisp. cl-cont makes special arrangements to support defun. Currently defgeneric and defmethod are not supported. Additional cases will be handled as they are exposed.

Calling call/cc from functions passed to standard functions (like mapcar) is not supported because standard functions have not been transformed to CPS style. Eventually cl-cont will provide its own version of commonly used standard functions that accept higher order parameters.

(c) отсюда

beka ()
Ответ на: комментарий от gensym

> не нужно в CL

Правильно, зачем нужны гарантии того, что макрос будет работать правильно? Пусть лучше падает по неизвестным причинам.

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

> В CL нету TCO.

Официально в стандарте нет. Тем не менее, многие реализации поддерживают TCO. Не поддерживают, разве что, работающий с байт-кодом clisp и компилирующий в Си ecl (??).

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

В CL нету TCO.

Отличная фраза в контексте дискуссии: «пишут не на стандартах, пишут на реализациях».

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

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