Re[10]: Scheme to be split into two language
От: metaprogrammer  
Дата: 30.08.09 18:07
Оценка:
Здравствуйте, Аноним, Вы писали:

M>> Хе хе. Посмешил. R6RS это не стандарт, а фигня. А в R5RS только syntax-rules с гигиеной.

А>Ясно, очередной упоротый коммон-лиспер, не читавший Пастернака.

А не пойти ка ли тебе погулять мимо, а? И гулять до тех пор, пока все основные реализации не будут поддерживать R6RS?

И ещё — я не коммонлиспер. Я лет десять на CL не писал. Мой основной инструмент — Схема.

А>Так как насчет syntax-case (можешь начать с добавления гигиены в свой MBE)?


Это тривиальное расширение. Мой вариант показывать не буду — явно не в коня корм.

А>Конечно "не нужны". Кто ж сомневается. Даже в твоем примере — полторы сотни строк только для разбора темплейта.


Ну, это же CL, там всё перанально делается. Важен лишь тот факт, что достаточно сделать это ровно один раз, средствами тупых макр, и больше не париться.

А>Машина тьюринга (ок, можешь взять чистое лямбда-исчисление) — твой выбор. Зачем тебе лишний сахар? К чему это я? Ах да, "туп до невозможности" не означает "проще ничего нет".


Ты чушь несёшь. Феерическую.

А>А почему syntax-rules?


Потому что именно к нему претензии, и вообще к гигиеническим макрам.

А> На syntax-case оно ТОЧНО не будет сложнее defmacro (в худшем случае больше на тот самый десяток строк, необходимый для реализации defmacro на syntax-case),


defmacro на syntax-case — это одна строка, умник ты недоделанный. Если это полноценная реализация syntax-case, а не как обычно.

А> а скорее всего будет значительно проще (ибо деструктуризация входной формы производится автоматически, да и gensym-ами обмазываться не нужно)


Да на хрен не нужна ТАКАЯ деструктуризация. Ты реши, реши мои задачки. Я поржу.

А>Да уж. Когда тебе прямым текстом пишут в коде примеры синтаксиса это, конечно же, очень нечитаемо (паттерн-матчинг не нужен). Все эти car, cadar, caddaar читаются гораздо легче.


Криволапость отдельных лиспокодеров никакого отношения к фундаментальности defmacro не имеет.

M>> Нечитаемость — это как раз про syntax-rules. Надо постараться очень, чтоб на них написать читаемо, если только не реализуешь очередную примитивную чушь вроде очередного for или там враппера для let и if. А вот с defmacro надо постараться, чтоб написать нечитаемо.

А>А чего стараться-то. С defmacro ВСЕГДА выходит нечитаемая каша. Старайся, не старайся — этого не избежать.

Как смешно бредит. Даже я так не умею. Тебе уже показали, что этот тупой и убогий вариант pattern matching, который есть в syntax-rules, реализуется тривиально. Так же тривиально реализуются и другие — в том числе и, например, PEG, или любой другой способ описания синтаксиса. Посмеши публику, сделай это на syntax-rules и прочих чисто схемских фичах.

M>> Да, совершенно невозможно. Для чего либо серьёзного. Для очередного тупенького синтаксического сахара — запросто, а для компиляции сложного DSL — фигушки.

А>О. Начал вводить граничные условия. Чувствуешь что облажался?

Облажался ты и только ты.

А> Напомнить, чего ты там говорил? Таки давай уже расскажи людям, какие именно макросы нельзя использовать в том же модуле (или TLP), в котором они определены.


Берём, например, свежий SISC или ещё какую практически применимую Схему. Определяем в модуле функцию f, и (define-macro mf (x) (f x)). В том же модуле пытаемся использовать (mf ...). Обламываемся и горько плачем.

А>>> Вы таки открыли мне глаза. То, что делается едва ли не в каждом проекте на схеме "на самом деле" делать нельзя. Понабирают, блин, по объявлениям.

M>> В практически каждом проекте на Схеме метапрограммирование практически не используется.
А>Идиоты атакуют.

Я вижу, ты самокритичен. Это хорошо. А что такое метапрограммирование ты не знаешь. Попробуй, если не согласен с моим вердиктом и не считаешь себя шибко неумным, реши мои задачки. Инфиксный синтаксис, pattern matching (с ellipsis, конечно же, и с banana brackets в стиле F#). Да ещё обязательно с гигиеной, ведь без гигиены — это же defmacro получится. А, да, чуть не забыл — ещё и list comprehensions сделай. Порадуй почтенную публику.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.