Re[2]: Lisp без скобок
От: Lazy Cjow Rhrr Россия lj://_lcr_
Дата: 05.12.06 15:49
Оценка:
cl-user,

CU>Ага, меня в лиспе больше всего раздражает шрифт, который стоит по-умолчанию в просмотрщике винрара — из-за него действительно блевануть хочется при виде лиспового кода


(offtop (? FAR))


LCR>>К счастью находятся особо любознательные ...


CU>К счастью ли?


Вопрос не совсем технического плана...


CU> А может просто чуть-чуть посмотреть по сторонам, почитать доку и понять, что ридер (reader) полностью в твоих руках и ты можешь творить с ним что-угодно (причём прямо в теле модуля/файла/блока/функции, где это особенное поведение ридера необходимо — привет немерлистам!)


CU>Единственная "священная корова" — код есть список, т.е. просто список. И как бы ты не переопределял readtable, задание и обработка списка должны оставаться такими-же простыми, как и с помощью скобок. Иначе макры (кодогенерация) летят ко всем чертям, а следом и ты со своим "изобретением".


CU>И остаётся вопрос (тот-же ,что и к немерлистам) — получив body (блок кода) — я могу его расчленить, проанализировать отдельные части, и собрать из разных частей другой (новый — как угодно) блок кода?


CU>Ни дока по дилану, ни по немерле на дали положительного ответа на данный вопрос (я подчёркиваю — я не говорю, что это не возможно — я просто не знаю — возможно ли это )


Ну цитировать можно не зная точного AST.
define macro with-mutex
  { with-mutex (?mutex:expression) ?code:body end }
    => { let mutex = ?mutex;
     check-error(pthread-mutex-lock(mutex));
     block ()
       ?code
     cleanup
       check-error(pthread-mutex-unlock(mutex));
     end block; }
end with-mutex;

;;; здесь будет подставлен макрос с параметрами mutex и телом ниже
with-mutex (mutex)
  format(*standard-output*, "The mutex is locked.\n");
end;

Аналогичным образом можно и в Немерле. Но вот именно так, как ты говоришь (расчленить, потом собрать) я думаю лучше спросить у немерлистов. Да, и хорошо бы знать, что за расчленение-сборка нужна?


CU>Обзор того, _что_ и _как_ не следует делать


Не совсем так. Я старался сохранить позицию стороннего наблюдателя (правда не очень получилось). Например, Пол Грэхэм в Arc вводит некоторые изменения синтаксиса. И для себя ты можешь творить что угодно. И редакторы... Есть новая идея? Покажи! Так что не всё так однозначно.


LCR>>Наконец последний, третий подход в борьбе со скобками — это борьба со стереотипами новичков и профанацией.


CU>Я бы сказал — единственный


Повторюсь, не всё так однозначно.


LCR>>(Неприятная черта в Лисп-коммьюнити (может только на c.l.l.) — просто зашкаливающая "доброжелательность" к новичкам. Можно конечно понять, но всё равно не очень ...)


CU>А вот этого не надо. Нормально там относятся (если не прадлагать убрать скобки из лиспа). В крайнем случае промолчат. Но если новичёк в лиспе — "гуру" в другом языке и сразу начинает учить всё лисп-сообщество как им жить дальше — какую реакцию вы ожидаете?


Что угодно, но не обидные издёвки (подозреваю, что автор Lispin просто не ожидал таких наездов):

Who are you? Some kind of comedian?

I love how it says "Lisp without parentheses" yet the example contains several
of these damned things Nice post, btw: I laughed after just reading the
title.

All in all, this project has less value than a single useful Lisp macro.

the friendly community prevents Bill from doing stupid things, spending his
time on a bullshit. if he wants a better readability, he'd better write an
editor.

Did I say "user"? PWUAHAHHAHAHAHHAAH.... I meant self-important
dilettante. "Hey, guys! Just found Lisp! Love it! Here is how we can fix
it...your thoughts?" PWUAUUAUAUAUAHAHAHAHH... I slay myself.

Последний меня вообще порадовал.


LCR>>Суть сводится к следующему: профессионалы глядя на S-выражение видят сразу дерево, поэтому они не видят скобок!

CU>Я бы заменил "не видят" на "не замечают (пока парность не нарушается, но об этом заботится редактор, компилятор ругается)"
Ну хорошо, пусть так. +1


CU>Продолжение будет?

Будет день — будет пища.
quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.