Здравствуйте, Mr.Cat, Вы писали:
MC>В scheme минимум штуки три-четыре более-менее известные макросистемы (это из того, о чем я в курсе — наверняка не все) — всегда можно выбрать подходящую.
Я говорю про R5RS конкретно. R6RS не лучше в этом плане. А так — практически каждая внятная реализация схемы имеет define-macro (bigloo, kawa, и т.п.) или аналоги.
MC> Если я правильно себе представляю defmacro, то ближе всего к нему syntactic closures или основанный на них explicit renaming.
Это совсем не из той сказки. defmacro предельно прост и туп, гигиену там надо руками делать.
Здравствуйте, Mr.Cat, Вы писали:
Y>>И таки clojure более правосла... тьфу функционален, чем Схема. MC>Ты про фичастость или про связь с функциональным программированием?
Конечно второе.
Lisp is not dead. It’s just the URL that has changed: http://clojure.org
Здравствуйте, metaprogrammer, Вы писали:
M> Это совсем не из той сказки. defmacro предельно прост и туп, гигиену там надо руками делать.
И это правильно, ибо так гибче. А еще правильнее иметь и тот и другой путь, как например, мне понравилось сделано в Немерле, возможность прерывать гигиену.
Lisp is not dead. It’s just the URL that has changed: http://clojure.org
"Mr.Cat" <64543@users.rsdn.ru> writes:
> Ты про фичастость или про связь с функциональным программированием?
Clojure хорош тем, что позволяет снизить порог вхождения за счет
использования Java классов. Ну например, я могу соорудить вот такой
ужасный, с точки зрения функционального подхода, код:
Но все-таки достичь своей цели. В scheme бы я просто даже не знал с чего
начать. Речь идет про практические задачи — GUI, работа с БД, OpenGl и так далее.
Здравствуйте, yumi, Вы писали:
M>> Это совсем не из той сказки. defmacro предельно прост и туп, гигиену там надо руками делать.
Y>И это правильно, ибо так гибче. А еще правильнее иметь и тот и другой путь, как например, мне понравилось сделано в Немерле, возможность прерывать гигиену.
Собственно, второй путь является подмножеством первого, поскольку компилятор syntax rules в обычные макры реализуется тривиально. А вот первое на уровне второго сделать невозможно, даже не смотря на тьюринг-полный язык.
Здравствуйте, metaprogrammer, Вы писали: M> Я говорю про R5RS конкретно. R6RS не лучше в этом плане. А так — практически каждая внятная реализация схемы имеет define-macro (bigloo, kawa, и т.п.) или аналоги.
R5rs поглядеть — так там вообще шаром покати. Это даже не стандарт, пожалуй — а просто общий знаменатель. Программировать проходится под конкретную имплементацию.
MC>> Если я правильно себе представляю defmacro, то ближе всего к нему syntactic closures или основанный на них explicit renaming. M> Это совсем не из той сказки. defmacro предельно прост и туп, гигиену там надо руками делать.
Ну а в sc/er автоматической гигиены и нет. Она руками включается.
Здравствуйте, yumi, Вы писали: Y>>>И таки clojure более правосла... тьфу функционален, чем Схема. MC>>Ты про фичастость или про связь с функциональным программированием? Y>Конечно второе.
Объясни, плз. У меня пока прямо противоположное мнение.
Здравствуйте, yumi, Вы писали: Y>А еще правильнее иметь и тот и другой путь, как например, мне понравилось сделано в Немерле, возможность прерывать гигиену.
Это есть и в scheme. Если я правильно помню, в nemerle макросы аналогичны syntax-case.
Здравствуйте, DemAS, Вы писали: DAS> Clojure хорош тем, что позволяет снизить порог вхождения за счет DAS>использования Java классов.
Из жавских схем есть sisc и kawa — обе не особо на слуху, но живы. Под дотнет есть ironscheme и (могу ошибаться) larceny и bigloo. Так что если тебя интересуют имплементации на базе глобальной и надежной платформы — велкам.
DAS>В scheme бы я просто даже не знал с чего DAS>начать. Речь идет про практические задачи — GUI, работа с БД, OpenGl и так далее.
Ну начать вестимо надо с документации по стандартной библиотеке твоей имплементации scheme (может у тя там вообще дотнет — см. IronScheme) а также поискать стороннии модули биндинги к нужным тебе библиотекам (у plt есть planet, у chicken — eggs). Короче, как обычно.
Здравствуйте, Mr.Cat, Вы писали:
MC>Из жавских схем есть sisc и kawa — обе не особо на слуху, но живы.
Kawa довольно шустра, но глючновата, и очень медленно развивается.
SISC — добротная реализация, но тормозноват, интерпретатор. Идеально подходит как встраиваемый скриптовый язык, разве что.
Очень много пользовался и тем, и другим, и остался в общем и целом разочарован.
MC> Под дотнет есть ironscheme и (могу ошибаться) larceny и bigloo. Так что если тебя интересуют имплементации на базе глобальной и надежной платформы — велкам.
Схем под .NET нормальных нет. Bigloo сам не managed, использовать его очень сложно. Остальные все какие-то недоделанные.
Здравствуйте, metaprogrammer, Вы писали: M> Схем под .NET нормальных нет. Bigloo сам не managed, использовать его очень сложно. Остальные все какие-то недоделанные.
Смотря что считать нормльным... Но да, имеет место недоделанность.
Здравствуйте, Mr.Cat, Вы писали:
MC>Объясни, плз. У меня пока прямо противоположное мнение.
А ты сходи на сайт, почитай, а еще лучше попиши. Ну например, что его делает более функциональным, так это immutability by default, все core data structures — immutable.
Lisp is not dead. It’s just the URL that has changed: http://clojure.org
FR пишет:
> Я конечно с лиспом очень поверхностно соприкасаюсь, но от Common Lisp у > меня очущения > такие же как от C++, язык уже перешел за грань переусложнения.
Да нет, думаю ты не прав. По крайней мере Common Lisp гораздо проще C++,
и мощнее, естественно.
В Common Lisp есть некоторые исторические наслоения, которые может быть
убрались бы следующим стандартом, если бы он был, но его всё нет и нет ...
Здравствуйте, metaprogrammer, Вы писали:
M> Kawa довольно шустра, но глючновата, и очень медленно развивается.
На счёт глюков: список в багзиле не длиннее прочих. А касательно развития: так kawa позиционирует себя как scheme — в определённой части "связана" стандартами. С другой стороны: def-syntax присутствует (как и defmacro) — творите.
Чем обе не нравятся: тяжело получить bytecode максимально приближённый к java-вскому (когда таки хочется скорости исполнения, но лень писать на pure java). И в этом плане clojure не устраивает в большей степени (как и суммарной своей тормознутостью). Приличнее прочих в этом плане выглядит scala. Но там нет макр
Здравствуйте, MasterZiv, Вы писали:
MZ>О, если такие любители схемы собрались, объясните MZ>мне на пальцах в двух словах, почему некоторые люди MZ>так любят схему, когда есть common lisp ?
MZ>Что в ней такого преимущественного ?
1. Схема маленькая и простая
2. Есть continuations
3. Case sensitive символы
4. Единое пространство имён для функций и переменных
5. Гораздо больше реализаций (в том числе и для всяких там JVM). ABCL не очень юзабелен пока.
Здравствуйте, cl-user, Вы писали:
CU>На счёт глюков: список в багзиле не длиннее прочих. А касательно развития: так kawa позиционирует себя как scheme — в определённой части "связана" стандартами. С другой стороны: def-syntax присутствует (как и defmacro) — творите.
Конкретно что меня достало — очень трудноуловимые и трудновоспроизводимые глюки кодогенератора. В последний раз я kawa использовал года четыре назад, когда окончательно убедился, что в ближайшее время ситуация лучше не станет. Перешел тогда на SISC. А что багзилла пуста — так оно и понятно, пользователей мало, сообщество куцее. Я вот, каюсь, грешен, ни одну из обнаруженных ошибок Перу Боснеру не сообщил. Они настолько все мутные были, что довести до легковоспроизводимого минимального теста и не получалось даже.
CU>Чем обе не нравятся: тяжело получить bytecode максимально приближённый к java-вскому (когда таки хочется скорости исполнения, но лень писать на pure java).
Угу. В идеале надо бы вообще иметь возможность встраивать близкие к Java конструкции в код, что на пару с макрами даёт офигенные результаты.
Кстати, в mbase так сделано (только для .net), там есть встроенный целевой язык !net, и есть возможность ембеддить IL-ассемблер.
CU> И в этом плане clojure не устраивает в большей степени (как и суммарной своей тормознутостью).
Зато динамические биндинги к жабе там наиболее красиво и прямо сделано, даже лучше, чем в SISC.
CU> Приличнее прочих в этом плане выглядит scala. Но там нет макр
metaprogrammer пишет:
> MZ>Что в ней такого преимущественного ? > > 1. Схема маленькая и простая > 2. Есть continuations > 3. Case sensitive символы > 4. Единое пространство имён для функций и переменных > 5. Гораздо больше реализаций (в том числе и для всяких там JVM). ABCL не > очень юзабелен пока.
Как-то это всё не очень убедительно.
1. Схема маленькая и простая
и + и — > 2. Есть continuations
Ну, бог с ними.
> 3. Case sensitive символы
Есть и в CL.
> 4. Единое пространство имён для функций и переменных
Ну на кой фиг оно ?
> 5. Гораздо больше реализаций (в том числе и для всяких там JVM). ABCL не > очень юзабелен пока.
Недо статка в реализациях CL тоже вроде бы нет. А Java -- да ну её ...