Приятная макросистема с фичами а-ля лукап &environment'ов sb-cltl2 искаробки. Радует благословлённость dsl (#lang), наличие континуейшенов и всяких amb'ов, куча батареек. А насчёт гигиены и паттерн-матчинга - целиком солидарен, потому сам предпочёл бы использовать вместо define-syntax негигиеничный аналог коммон-лисповского defmacro, на который ссылка в последнем пункте вашего анонимуса. Но коммон-лисп как-то лаконичнее, короче, проще и быстрее (субъективщина).
> Радует благословлённость dsl (#lang), наличие континуейшенов и всяких amb'ов, куча батареек.
И ещё "радует" отсутствие unwind-protect. Что при работе со внешними ресурсами при наличии в коде нелокальных выходов легко может привести к их утечке. Это, впрочем, проблема не конкретно ракеты, а всех схем, реализующих продолжения (которые, как широко известно, с unwind-protect принципиально несовместимы).
dynamic-wind сам по себе не годен в замену unwind-protect в ситуациях где поступки post-thunk не обратимы (на пример удаление файла). В таких случаях его надо использовать вешая финализаторы на все продолжения в value-thunk. Подробности здесь ( под 2006-05-01 On control brackets and resource release):
Вообще-то анафорическим макрам ракетовская гигиена никак не мешает - обойти ее можно в точности так же легко, как и ввести через генсим, а если совсем лениво, то можно ридер-макрос написать, который будет сам "разгигиенивать" нужный анафор. Зато иногда благодаря гигиене приходится меньше плясать с бубном и не надо париться на счет того, что можно забыть ее ввести, когда она нужна. Ну про переопределение вызываемых в макросе функций я вообще не говорю, тут без автоматической гигиены никуда.
Comments 43
Reply
Reply
Самая юзабельная реализация схемы в принципе.
переименовались зря только.
Reply
Ты пользовалась его макросистемой?
Reply
Макросы я не смотрела пока ни в plt, ни в CL, к сожалению.
Reply
удивительно мощный инструмент
Reply
http://shootout.alioth.debian.org/u32/benchmark.php?test=all&lang=racket&lang2=sbcl
http://shootout.alioth.debian.org/u64/benchmark.php?test=all&lang=racket&lang2=sbcl
Вполне на уровне выглядит. А ведь ещё есть возможность собирать stand alone executable небольшого размера.
Reply
Радует благословлённость dsl (#lang), наличие континуейшенов и всяких amb'ов, куча батареек.
А насчёт гигиены и паттерн-матчинга - целиком солидарен, потому сам предпочёл бы использовать вместо define-syntax негигиеничный аналог коммон-лисповского defmacro, на который ссылка в последнем пункте вашего анонимуса.
Но коммон-лисп как-то лаконичнее, короче, проще и быстрее (субъективщина).
Reply
И ещё "радует" отсутствие unwind-protect. Что при работе со внешними ресурсами при наличии в коде нелокальных выходов легко может привести к их утечке. Это, впрочем, проблема не конкретно ракеты, а всех схем, реализующих продолжения (которые, как широко известно, с unwind-protect принципиально несовместимы).
Reply
Ну объясните, наконец, чем вас dynamic-wind не устраивает.
http://docs.racket-lang.org/reference/cont.html#%28def._%28%28quote._~23~25kernel%29._dynamic-wind%29%29
Reply
под 2006-05-01 On control brackets and resource release):
http://mumble.net/~campbell/blag.txt
--Другой анонимус (которого Scheme тоже не устраивает, но по другим причинам)
Reply
Reply
Leave a comment