Автор | Сообщение |
Kergan
300 сообщений |
#7077 2013-06-11 10:13 GMT+3 часа(ов) |
Цитата ну вот в схеме я безо всяких списков могу спокойно макросы писать. значит если в общелиспе нужны списки для написания макросов - добавляй их к defmacro. Цитата за тем, что работая через match ты вынужден отказаться от многочисленных плющек, предоставляемых синтаксическими объектами - та же гигиена (и описанное тобой связывание идентификаторов по месту опредеделения), например. То есть - какой смысл использовать match, если syntax-case ничем не сложнее но предоставляет множество возможностей просто искаробки, не требуя никаких затрат? Цитата (syntax-local-value #'let) вообще можно например вот так сделать: (define syntax yoba (let ([let (syntax-local-value #'let)]) (compose let let))) соответственно yoba - будет композиция функции соответствующей let самой с собой. |
|
snv
25 сообщений |
#7078 2013-06-11 17:47 GMT+3 часа(ов) |
Цитата Scheme нет list? Цитата Но мои предложенные мною макросы поддерживают сразу match и гигиену. Выходит define-syntax макросы ущербны, раз с ними не работают стандартные средства и приходится изобретать велосипед, типа syntax-rules. (и описанное тобой связывание идентификаторов по месту опредеделения), например. Цитата syntax-case - лишняя сущность. Многие например не любят Java за её "class Main { static public void main" (это всё лишние сущности), аналогом которой является define-syntax в Scheme. Цитата Ритуалы какие-то. Цитата Но зачем? [Linux дома] |
|
The hour will come in which all the peoples of the earth will awake, and the Jews will be the victims. -- Joseph Goebbels, 21 January 1945
|
|
Kergan
300 сообщений |
#7079 2013-06-11 19:09 GMT+3 часа(ов) |
Цитата есть. но для написания макросов он не нужен. а мы же сравниваем функции, необходимые для написания макросов, так? если же сравнивать всю библиотеку - ну тут общелисп у минималистичной по дизайну схемки точно соснет. Цитата нет, не поддерживают. Цитата опять ты повторяешь эту глупость. сказали же уже - работают. Цитата еще раз - можешь писать на match, если хочешь, но зачем, если есть лучшая альтернатива? Цитата что "например"? если ты хочешь связывать идентификаторы по месту определения, то ты уже не можешь представлять идентификатор обычным symbol. Придется делать специальный враппер вокруг symbol'a, в котором будет лежать информация о связывании. Вот этот враппер и будет называть "синтаксический объект". в racket просто пошли несколько дальше - если мы делаем врапперы вокруг символов, то почему бы не делать такие вокруг списков? это же будет вполне логично и естественно. Цитата это вообще никакая не сущность. и уж тем более не лишняя. ее в ядре языка нет (в отличии от того же define-syntax) syntax-case - это обычный библиотечный макрос. По твоей логике любая функция для работы со списками - дишняя сущность, т.к. достаточно car/cdr/cons. Значит надо из библиотеки все ф-и кроме трех указанных убирать или что? map, например - лишняя сущность. И flatten. И take. Да все. Цитата никаких ритуалов. просто получаем значение. а как то же самое сделать в CL? Цитата Это просто пример, демонстрирующий, что макросы - обычные ф-и, с которыми можно делать все то же самое, что с обычными ф-ями (композировать, например). И то, что макрос принимает только один аргумент в данном случае плюс, т.к. последовательность шагов макроэкспанда в данном случае - композиция шагов, в отличии от CL, где все значительно сложнее. |
|
snv
25 сообщений |
#7080 2013-06-11 19:59 GMT+3 часа(ов) |
Цитата Т.е. был изобретён велосипед, вместо утилизации проверенного средства языка? Цитата А я и не спорю, что в CL много неудачных решений. Но и в Scheme их достаточно. Цитата Поддержтвают. Например:
Цитата Так зачем изобретать колесо? Цитата Чем лучшая? Цитата Можно вместо symbol применить обычные string, у которых как известно уникальные адреса, на которые можно повесить (через хэш-таблицу) любую мета-инфу. Далее, если символы реализованы как замыкания, то их можно обернуть в лямбду-делегат, которая немного модифицирует их поведение, с виду оставляя обычными символами. Или, если у нас обычная ООП система, можно наследовать в стиле class CMacroSymbol:CBasicSymbol {...}. Возможности обойтись без syntax-object ограничены лишь твоей фантазией. Цитата Проблема, что Схемовские врапперы путаются под ногами и вводят дополнительный http://c2.com/cgi/wiki?GodObject (к уже имеющимся cons, number и symbol). Цитата Я тебя удивлю: всё в компьютере выражается всего через одну функцию - http://en.wikipedia.org/wiki/NAND_logic (эквивалентный http://en.wikipedia.org/wiki/Binary_lambda_calculus) Минималистичней некуда. Всего один примитивнейший оператор, который даже твоя кошка способна понять. Однако в результате получаются монструозные системы, типа PHP, хотя весь PHP код и раскрывается в NAND. Цитата Что-то в твоей идее есть. Refal например обходится без них. Ибо CAR и CDR слишком низкоуровневые функции, заменяемые паттерн-матчингом в стиле ([X@Xs] => X) и ([X@Xs] => Xs), а map элементарно делается через ([X@Xs] => list F.X @self.Xs) Цитата http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/acc_macro-function.html Цитата Чем CL сложней? |
|
The hour will come in which all the peoples of the earth will awake, and the Jews will be the victims. -- Joseph Goebbels, 21 January 1945
|
|
Kergan
300 сообщений |
#7081 2013-06-11 20:45 GMT+3 часа(ов) |
Цитата почему же вместо? он имеет функционал, которого match не имеет. и это такое же проверенное средство. Цитата я тоже могу придумать код на каком=-то не существующем языке. обычный match по определению не может поддерживать гигиену. Цитата значительно более широкий функционал без повышения затрат. Цитата а никто и не изобретает Цитата ты пока что предложил разные споссбы реализации syntax object, которые ничего не меняю с точки зрения использования. хреновая у тебя фантазия, видно. Цитата либо дополнительные врапперы - либо отсутствие гигиены. иначе никак. Цитата не удивишь Цитата нет, в ней ничего нет Цитата то есть также Цитата т.к. в трансформере может быть много аргументов, надо задавать правила преобразования к одно-аргументному трансформеру либо правила матчинга формы на аргументы. в схемке этого ничего не надо. |
|
snv
25 сообщений |
#7082 2013-06-12 07:31 GMT+3 часа(ов) |
Цитата Мне надоело. И вообще я работу искал. Пока. |
|
The hour will come in which all the peoples of the earth will awake, and the Jews will be the victims. -- Joseph Goebbels, 21 January 1945
|
|
Kergan
300 сообщений |
#7083 2013-06-12 08:01 GMT+3 часа(ов) |
И не возвращайся, золотце.
|
|
snv
25 сообщений |
#7084 2013-06-13 16:00 GMT+3 часа(ов) |
Цитата лучше работу бы мне помог найти. |
|
The hour will come in which all the peoples of the earth will awake, and the Jews will be the victims. -- Joseph Goebbels, 21 January 1945
|
|
Aoloa
37 сообщений |
#7102 2013-07-08 22:23 GMT+3 часа(ов) |
Цитата Прошу прощения, хотелось сказать syntax-rules, а написалось почему-то syntax-case. ![]() |
|
With iTeX* your entire life can be encapsulated into a dynamic hyperdocument, downloadable by anybody you designate (Donald E. Knuth, An Earthshaking Announcement)
|