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


[#]  
lmtea

>>Racket 5.2

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

* ()
[#]  

А зачем этот язык?

>goto wiki

goto changelog

anonymous ()
[#] Ответ на: комментарий от anonymous 10.11.2011 10:22:47  
aho

> А зачем этот язык?

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

()
[#] Ответ на: комментарий от aho 10.11.2011 10:26:42  
SteveBallmer
>>-----Цитата---->>

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

<<-----Цитата----<<

Скорее:

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

()
[#]  

Рэкетъ на ЛОРѣ? Оригинально-съ.

()
[#] Ответ на: комментарий от aho 10.11.2011 10:26:42  

>я не прав

Да-съ. Причёмъ, всѣгда.

()
[#] Ответ на: комментарий от terminator 10.11.2011 10:35:30  
aho

> Да-съ. Причёмъ, всѣгда.

и даже чаще

()
[#]  
Satou

Позитивненько, я на нём примеры из SICP делаю

* ()
[#]  

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

* ()
[#] Ответ на: комментарий от aho 10.11.2011 10:26:42  
>>-----Цитата---->>

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

<<-----Цитата----<<

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

* ()
[#] Ответ на: комментарий от power 10.11.2011 10:55:30  
aho

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

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

()
[#]  
buddhist

Он полностью оправдывает свое название :)

*** ()
[#] Ответ на: комментарий от Satou 10.11.2011 10:45:59  
beka

>Позитивненько, я на нём примеры из SICP делаю

Для SICP-а даже простенького STk хватает.

* ()
[#] Ответ на: комментарий от buddhist 10.11.2011 11:25:30  
beka

>Он полностью оправдывает свое название :)

поясните

* ()
[#] Ответ на: комментарий от beka 10.11.2011 11:35:36  
buddhist

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

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

*** ()
[#]  
Reset

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

***** ()
[#]  
CARS

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

  • Racket — это всё-таки Scheme или уже нет?
  • Правда ли, что Racket превосходит CL в области метапрограммирования?
** ()
[#] Ответ на: комментарий от CARS 10.11.2011 12:04:02  
>>-----Цитата---->>

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

<<-----Цитата----<<

Scheme.

* ()
[#] Ответ на: комментарий от CARS 10.11.2011 12:04:02  
Reset

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

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

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

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

***** ()
[#]  
Hexs

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

()
[#] Ответ на: комментарий от CARS 10.11.2011 12:04:02  
Begemoth

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

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

***** ()
[#] Ответ на: комментарий от Begemoth 10.11.2011 12:30:55  
x4DA

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

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

** ()
[#] Ответ на: комментарий от x4DA 10.11.2011 14:49:22  
Reset

в racket'е есть свой родной гуй, в венде смотрится как родной

***** ()
[#] Ответ на: комментарий от Reset 10.11.2011 15:35:57  
aho

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

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

()
[#]  

А есть ли аналог quicklisp для ракеты?

*** ()
[#] Ответ на: комментарий от aho 10.11.2011 10:26:42  

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

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

*** ()
[#] Ответ на: комментарий от ugoday 10.11.2011 15:50:31  

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

*** ()
[#] Ответ на: комментарий от naryl 10.11.2011 16:01:09  
aho

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

нет

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


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

()
[#] Ответ на: комментарий от CARS 10.11.2011 12:04:02  

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

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

*** ()
[#] Ответ на: комментарий от aho 10.11.2011 16:03:57  

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

*** ()
[#] Ответ на: комментарий от naryl 10.11.2011 16:16:39  
aho

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

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

()
[#] Ответ на: комментарий от naryl 10.11.2011 16:10:50  
Begemoth

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

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

***** ()
[#] Ответ на: комментарий от Satou 10.11.2011 10:45:59  
lucentcode

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

** ()
[#] Ответ на: комментарий от beka 10.11.2011 11:34:30  

Ава из "A boot de souffle"?

anonymous ()
[#] Ответ на: комментарий от naryl 10.11.2011 16:10:50  

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

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

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

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

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

Зачем?

anonymous ()
[#] Ответ на: комментарий от anonymous 10.11.2011 19:19:40  
gensym

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

не нужно в CL

* ()
[#] Ответ на: комментарий от gensym 10.11.2011 20:11:02  
Begemoth

> не нужно в CL

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

***** ()
[#] Ответ на: комментарий от Begemoth 10.11.2011 20:20:17  
OldFatMan

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

В CL нету continuations? О_О

Я не спец по CL, потому и спрашиваю.

# ()
[#] Ответ на: комментарий от Begemoth 10.11.2011 20:20:17  
gensym

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

right

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


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

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


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

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


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

* ()
[#] Ответ на: комментарий от OldFatMan 10.11.2011 20:25:27  
beka

>В CL нету continuations?

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

* ()
[#] Ответ на: комментарий от beka 10.11.2011 20:38:15  
OldFatMan

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

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

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

>>-----Цитата---->>

gensym

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

<<-----Цитата----<<
# ()
[#] Ответ на: комментарий от beka 10.11.2011 20:38:15  
Begemoth

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

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

***** ()
[#] Ответ на: комментарий от Begemoth 10.11.2011 20:51:48  
beka
>>-----Цитата---->>

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) отсюда

* ()
[#] Ответ на: комментарий от gensym 10.11.2011 20:11:02  

> не нужно в CL

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

anonymous ()
[#] Ответ на: комментарий от OldFatMan 10.11.2011 20:25:27  

> В CL нету continuations? О_О

В CL нету TCO. То есть продолжений быть не может.

anonymous ()
[#] Ответ на: комментарий от anonymous 11.11.2011 4:55:30  
dave

> В CL нету TCO.

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

***** ()
[#] Ответ на: комментарий от anonymous 11.11.2011 4:55:30  

> В CL нету TCO.

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

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

*** ()