Re[6]: Scheme to be split into two language
От: metaprogrammer  
Дата: 25.08.09 12:39
Оценка:
Здравствуйте, Mr.Cat, Вы писали:

MC>В scheme минимум штуки три-четыре более-менее известные макросистемы (это из того, о чем я в курсе — наверняка не все) — всегда можно выбрать подходящую.


Я говорю про R5RS конкретно. R6RS не лучше в этом плане. А так — практически каждая внятная реализация схемы имеет define-macro (bigloo, kawa, и т.п.) или аналоги.

MC> Если я правильно себе представляю defmacro, то ближе всего к нему syntactic closures или основанный на них explicit renaming.


Это совсем не из той сказки. defmacro предельно прост и туп, гигиену там надо руками делать.
Re[7]: Scheme to be split into two language
От: yumi  
Дата: 25.08.09 12:50
Оценка:
Здравствуйте, Mr.Cat, Вы писали:

Y>>И таки clojure более правосла... тьфу функционален, чем Схема.

MC>Ты про фичастость или про связь с функциональным программированием?

Конечно второе.
Lisp is not dead. It’s just the URL that has changed:
http://clojure.org
Re[7]: Scheme to be split into two language
От: yumi  
Дата: 25.08.09 12:52
Оценка:
Здравствуйте, metaprogrammer, Вы писали:

M> Это совсем не из той сказки. defmacro предельно прост и туп, гигиену там надо руками делать.


И это правильно, ибо так гибче. А еще правильнее иметь и тот и другой путь, как например, мне понравилось сделано в Немерле, возможность прерывать гигиену.
Lisp is not dead. It’s just the URL that has changed:
http://clojure.org
Re[7]: Scheme to be split into two language
От: DemAS http://demas.me
Дата: 25.08.09 13:06
Оценка:
"Mr.Cat" <64543@users.rsdn.ru> writes:

> Ты про фичастость или про связь с функциональным программированием?


Clojure хорош тем, что позволяет снизить порог вхождения за счет
использования Java классов. Ну например, я могу соорудить вот такой
ужасный, с точки зрения функционального подхода, код:

; (read-file "/home/demas/study/java/io/FileReaderDemo.java")      
(defn create-freader [filename]                                   
  (def f-reader (new java.io.FileReader filename))                
  f-reader)                                                       

(defn create-breader [f-reader]
  (def b-reader (new java.io.BufferedReader f-reader))
  b-reader)

(defn close-freader [f-reader]
  (. f-reader close))

(defn eof [line]
  (if (= line nil)
    true
    false))

(defn read-lines [reader]
  (loop [result []]
    (def next-line (. reader readLine))
    (if (eof next-line)
      result
      (recur (conj result next-line)))))

(defn read-file [filename]
  (def f-reader (create-freader filename))
  (def b-reader (create-breader f-reader))
  (def lines (read-lines b-reader))
  (close-freader f-reader)
  lines)


Но все-таки достичь своей цели. В scheme бы я просто даже не знал с чего
начать. Речь идет про практические задачи — GUI, работа с БД, OpenGl и так далее.
Posted via RSDN NNTP Server 2.1 beta
Re[8]: Scheme to be split into two language
От: metaprogrammer  
Дата: 25.08.09 13:10
Оценка:
Здравствуйте, yumi, Вы писали:

M>> Это совсем не из той сказки. defmacro предельно прост и туп, гигиену там надо руками делать.


Y>И это правильно, ибо так гибче. А еще правильнее иметь и тот и другой путь, как например, мне понравилось сделано в Немерле, возможность прерывать гигиену.


Собственно, второй путь является подмножеством первого, поскольку компилятор syntax rules в обычные макры реализуется тривиально. А вот первое на уровне второго сделать невозможно, даже не смотря на тьюринг-полный язык.
Re[7]: Scheme to be split into two language
От: Mr.Cat  
Дата: 25.08.09 13:17
Оценка:
Здравствуйте, metaprogrammer, Вы писали:
M> Я говорю про R5RS конкретно. R6RS не лучше в этом плане. А так — практически каждая внятная реализация схемы имеет define-macro (bigloo, kawa, и т.п.) или аналоги.
R5rs поглядеть — так там вообще шаром покати. Это даже не стандарт, пожалуй — а просто общий знаменатель. Программировать проходится под конкретную имплементацию.

MC>> Если я правильно себе представляю defmacro, то ближе всего к нему syntactic closures или основанный на них explicit renaming.

M> Это совсем не из той сказки. defmacro предельно прост и туп, гигиену там надо руками делать.
Ну а в sc/er автоматической гигиены и нет. Она руками включается.
Re[8]: Scheme to be split into two language
От: Mr.Cat  
Дата: 25.08.09 13:19
Оценка:
Здравствуйте, yumi, Вы писали:
Y>>>И таки clojure более правосла... тьфу функционален, чем Схема.
MC>>Ты про фичастость или про связь с функциональным программированием?
Y>Конечно второе.
Объясни, плз. У меня пока прямо противоположное мнение.
Re[8]: Scheme to be split into two language
От: Mr.Cat  
Дата: 25.08.09 13:26
Оценка:
Здравствуйте, yumi, Вы писали:
Y>А еще правильнее иметь и тот и другой путь, как например, мне понравилось сделано в Немерле, возможность прерывать гигиену.
Это есть и в scheme. Если я правильно помню, в nemerle макросы аналогичны syntax-case.
Re[8]: Scheme to be split into two language
От: Mr.Cat  
Дата: 25.08.09 13:40
Оценка:
Здравствуйте, DemAS, Вы писали:
DAS> Clojure хорош тем, что позволяет снизить порог вхождения за счет
DAS>использования Java классов.
Из жавских схем есть sisc и kawa — обе не особо на слуху, но живы. Под дотнет есть ironscheme и (могу ошибаться) larceny и bigloo. Так что если тебя интересуют имплементации на базе глобальной и надежной платформы — велкам.

DAS>В scheme бы я просто даже не знал с чего

DAS>начать. Речь идет про практические задачи — GUI, работа с БД, OpenGl и так далее.
Ну начать вестимо надо с документации по стандартной библиотеке твоей имплементации scheme (может у тя там вообще дотнет — см. IronScheme) а также поискать стороннии модули биндинги к нужным тебе библиотекам (у plt есть planet, у chicken — eggs). Короче, как обычно.
Re[9]: Scheme to be split into two language
От: Mr.Cat  
Дата: 25.08.09 13:55
Оценка:
Здравствуйте, Mr.Cat, Вы писали:
MC> стороннии модули биндинги
Читать как "сторонние модули и биндинги".
Re[9]: Scheme to be split into two language
От: metaprogrammer  
Дата: 25.08.09 14:30
Оценка:
Здравствуйте, Mr.Cat, Вы писали:

MC>Из жавских схем есть sisc и kawa — обе не особо на слуху, но живы.


Kawa довольно шустра, но глючновата, и очень медленно развивается.

SISC — добротная реализация, но тормозноват, интерпретатор. Идеально подходит как встраиваемый скриптовый язык, разве что.

Очень много пользовался и тем, и другим, и остался в общем и целом разочарован.

MC> Под дотнет есть ironscheme и (могу ошибаться) larceny и bigloo. Так что если тебя интересуют имплементации на базе глобальной и надежной платформы — велкам.


Схем под .NET нормальных нет. Bigloo сам не managed, использовать его очень сложно. Остальные все какие-то недоделанные.
Re[10]: Scheme to be split into two language
От: Mr.Cat  
Дата: 25.08.09 18:25
Оценка:
Здравствуйте, metaprogrammer, Вы писали:
M> Схем под .NET нормальных нет. Bigloo сам не managed, использовать его очень сложно. Остальные все какие-то недоделанные.
Смотря что считать нормльным... Но да, имеет место недоделанность.
Re[9]: Scheme to be split into two language
От: yumi  
Дата: 26.08.09 00:00
Оценка:
Здравствуйте, 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
Re[6]: Scheme to be split into two language
От: MasterZiv СССР  
Дата: 26.08.09 05:50
Оценка:
yumi пишет:

> И таки clojure более правосла... тьфу функционален, чем Схема.


Так, давайте не будем мутить воду. Все эти языки есть самые
что ни на есть православные технологии. Просто церкви разные.
Posted via RSDN NNTP Server 2.1 beta
Re[6]: Scheme to be split into two language
От: MasterZiv СССР  
Дата: 26.08.09 05:54
Оценка:
Mr.Cat пишет:

> M>P.S. я бывший аноним из треда про "VM на лиспе"

> Приятно познакомиться

О, если такие любители схемы собрались, объясните
мне на пальцах в двух словах, почему некоторые люди
так любят схему, когда есть common lisp ?

Что в ней такого преимущественного ?
Posted via RSDN NNTP Server 2.1 beta
Re[3]: Scheme to be split into two language
От: MasterZiv СССР  
Дата: 26.08.09 05:57
Оценка:
FR пишет:

> Я конечно с лиспом очень поверхностно соприкасаюсь, но от Common Lisp у

> меня очущения
> такие же как от C++, язык уже перешел за грань переусложнения.

Да нет, думаю ты не прав. По крайней мере Common Lisp гораздо проще C++,
и мощнее, естественно.

В Common Lisp есть некоторые исторические наслоения, которые может быть
убрались бы следующим стандартом, если бы он был, но его всё нет и нет ...
Posted via RSDN NNTP Server 2.1 beta
Re[10]: Scheme to be split into two language
От: cl-user  
Дата: 26.08.09 06:04
Оценка:
Здравствуйте, metaprogrammer, Вы писали:

M> Kawa довольно шустра, но глючновата, и очень медленно развивается.


На счёт глюков: список в багзиле не длиннее прочих. А касательно развития: так kawa позиционирует себя как scheme — в определённой части "связана" стандартами. С другой стороны: def-syntax присутствует (как и defmacro) — творите.

Чем обе не нравятся: тяжело получить bytecode максимально приближённый к java-вскому (когда таки хочется скорости исполнения, но лень писать на pure java). И в этом плане clojure не устраивает в большей степени (как и суммарной своей тормознутостью). Приличнее прочих в этом плане выглядит scala. Но там нет макр
Re[7]: Scheme to be split into two language
От: metaprogrammer  
Дата: 26.08.09 12:16
Оценка:
Здравствуйте, MasterZiv, Вы писали:

MZ>О, если такие любители схемы собрались, объясните

MZ>мне на пальцах в двух словах, почему некоторые люди
MZ>так любят схему, когда есть common lisp ?

MZ>Что в ней такого преимущественного ?


1. Схема маленькая и простая
2. Есть continuations
3. Case sensitive символы
4. Единое пространство имён для функций и переменных
5. Гораздо больше реализаций (в том числе и для всяких там JVM). ABCL не очень юзабелен пока.
Re[11]: Scheme to be split into two language
От: metaprogrammer  
Дата: 26.08.09 13:17
Оценка:
Здравствуйте, 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. Но там нет макр


Зато там много всякого другого интересного есть.
Re[8]: Scheme to be split into two language
От: MasterZiv СССР  
Дата: 26.08.09 17:31
Оценка:
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 -- да ну её ...
Posted via RSDN NNTP Server 2.1 beta
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.