tag:blogger.com,1999:blog-5411819754291292105.post2920406978190001223..comments2023-04-10T00:28:48.006-07:00Comments on archimag: Динамическая область видимостиarchimaghttp://www.blogger.com/profile/07997791035847047137noreply@blogger.comBlogger14125tag:blogger.com,1999:blog-5411819754291292105.post-79393214035729930362010-01-06T10:38:39.263-08:002010-01-06T10:38:39.263-08:00В Perl тоже есть объявления с динамическим scope, ...В Perl тоже есть объявления с динамическим scope, почему-то об этом все забыли. Правда лучше их там не использовать...<br /><br />Насчет же CL - они здесь настолько удобны (и имеют абсолютно надежное и предсказуемое поведение во всех реализациях CL (в отличии от Perl)) что конечно, нужно лишь осознанно сдерживать себя от чересчур большого нагружения логики приложения на них. Т.е. просто задавать себе вопрос "а я по-прежнему все контролирую (через REPL, тесты)?".Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-5411819754291292105.post-72940192215619462712009-12-24T03:40:19.232-08:002009-12-24T03:40:19.232-08:00@antares0
> используется для операций
> (i...@antares0 <br />> используется для операций <br />> (if (eq объект паттерн) то иначе)<br /><br />Нет. В cl-routes, во-первых, строится "унифицирующее дерево", которое позволяет вести поиск в дереве, а не линейном списке (это критично для сайтов, имеющих сотни, или даже тысячи маршрутов). Во-вторых, унификация ведётся в обе стороны, т.е. оба выражения содержат неизвестные, что позволило весьма существенно упростить решение, при этом, суть даже не сколько в проверке на соответствие образцу (хотя это, конечно, очень важно), сколько в "двухстороннем" извлечении значений параметров.archimaghttps://www.blogger.com/profile/07997791035847047137noreply@blogger.comtag:blogger.com,1999:blog-5411819754291292105.post-70609465078095301082009-12-24T03:31:30.874-08:002009-12-24T03:31:30.874-08:00Поэтому в первом своем комментарии я и писал "...Поэтому в первом своем комментарии я и писал "в данном случае". Все таки pattern matching обычно не связан с системами лог.вывода, если не считать ,конечно, рег. выражения такими системами.<br />С другой стороны и в помянутых системах унификацация используется для операций (if (eq объект паттерн) то иначе).<br />Или я опять что-то упускаю?Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-5411819754291292105.post-80811973234819907112009-12-24T02:25:27.316-08:002009-12-24T02:25:27.316-08:00@antares0
Унификация родилась вовсе не для "p...@antares0<br />Унификация родилась вовсе не для "pattern matching", а как один из базовых элементов систем логического вывода.archimaghttps://www.blogger.com/profile/07997791035847047137noreply@blogger.comtag:blogger.com,1999:blog-5411819754291292105.post-5447630837118941172009-12-24T02:21:28.107-08:002009-12-24T02:21:28.107-08:00В чем эта большая широта применения проявляется?
c...В чем эта большая широта применения проявляется?<br />cl-unification видел, cl-routes тоже смотел но более бегло.<br />Пример или код в котором это разница была бы видна отчетливо?<br />Просто я не могу могу сходу назвать другого применения для унификации чем это самое сравнение с образцом. Но может я глубоко заблуждаюсь.Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-5411819754291292105.post-31737363170495042202009-12-24T00:43:13.516-08:002009-12-24T00:43:13.516-08:00@antares0
Унификация более общее понятие, с более ...@antares0<br />Унификация более общее понятие, с более широкой областью применения, например, я использую унификацию в cl-routes для сопоставления url коду обработчика.<br /><br />Для CL есть, например, cl-unification, которая, в том числе, предоставляет инструменты для "pattern matching": http://common-lisp.net/project/cl-unification/control-flow.html<br /><br />С другой стороны, автор позиционирует "сравнение с образцом" как достижения системы типов, но, если говорить о "pattern matching" как о частном случае применения унификации, то подобное утверждение становится, очевидно, сомнительным.archimaghttps://www.blogger.com/profile/07997791035847047137noreply@blogger.comtag:blogger.com,1999:blog-5411819754291292105.post-52360398040969390652009-12-24T00:26:40.328-08:002009-12-24T00:26:40.328-08:00А какая разница между "сравнением с образцом&...А какая разница между "сравнением с образцом" и унификацией в данном случае?Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-5411819754291292105.post-49051873697937156622009-12-23T23:56:30.322-08:002009-12-23T23:56:30.322-08:00@Artyom Shalkhakov
http://lisper.ru/articles/cl-v...@Artyom Shalkhakov <br />http://lisper.ru/articles/cl-vars - вот хорошая (и небольшая) статья на тему лексических и динамических переменныхarchimaghttps://www.blogger.com/profile/07997791035847047137noreply@blogger.comtag:blogger.com,1999:blog-5411819754291292105.post-73298301716382423922009-12-23T22:48:16.650-08:002009-12-23T22:48:16.650-08:00Не понимаю, что значит "по умолчанию".
...Не понимаю, что значит "по умолчанию".<br /><br />"Глобальные" переменные в CL(объявляемые через defvar и defparameter) - динамические.<br />progv создает динамические биндинги<br />let создает лексические биндинги если имя уже не обозначено как имя динамической переменнойAnonymousnoreply@blogger.comtag:blogger.com,1999:blog-5411819754291292105.post-77264814683659018642009-12-23T22:00:52.259-08:002009-12-23T22:00:52.259-08:002 love5an
> У Маккарти это LISP 1.5. Просто Lis...2 love5an<br />> У Маккарти это LISP 1.5. Просто Lisp это как бы семейство языков.<br /><br />Значит, в статье неточность, только и всего.<br /><br />> "динамическая область видимости - несовременно"<br /><br />Хм, почитайте тот же PLAI, там описывается, почему динамическая область видимости по-умолчанию -- это не просто несовременно, но еще и нехорошо, ибо разрушает процедурную абстракцию.<br /><br />> "Emacs Lisp - единственный из достойных упоминания языков с динамической областью видимости, используемый на практике"<br /><br />В Emacs Lisp динамическая область видимости принята по-умолчанию (статическую, AFAIK, нужно реализовывать самому). В CL тоже?Artyom Shalkhakovhttps://www.blogger.com/profile/08658644954244073101noreply@blogger.comtag:blogger.com,1999:blog-5411819754291292105.post-31079520815407424542009-12-23T21:34:54.527-08:002009-12-23T21:34:54.527-08:00У Маккарти это LISP 1.5. Просто Lisp это как бы се...У Маккарти это LISP 1.5. Просто Lisp это как бы семейство языков.<br />Вывод о CL следует из<br /><br />>Emacs LISP— практически единственный используемый на практике современный язык программирования, где используется динамическая область видимости.<br /><br />и из собственно пассажа о динамической области видимости. <br /><br />конкретнее:<br />"динамическая область видимости - несовременно"<br />и<br />"Emacs Lisp - единственный из достойных упоминания языков с динамической областью видимости, используемый на практике"<br />==><br />"Остальные лиспы устарели и не используются на практике"Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-5411819754291292105.post-298821954036460402009-12-23T20:38:52.338-08:002009-12-23T20:38:52.338-08:00LISP (который именно большими буквами) -- это тот ...LISP (который именно большими буквами) -- это тот язык, который был реализован в интерпретаторе, написанном студентами Маккарти. И то ли в нем, то ли в языке, была динамическая область видимости (потому что реализация на компьютере *очень* простая). В общем, как вы тут разглядели CL, мне непонятно.<br /><br />2 love5an<br />> Я вот в цитате вижу куда более неприятные посылы:<br />> * LISP *был* (да сплыл, видимо)<br /><br />Вот именно, сплыл.<br /><br />> * Common Lisp не применяется на практике<br /><br />Лол, как Вы это вывели?Artyom Shalkhakovhttps://www.blogger.com/profile/08658644954244073101noreply@blogger.comtag:blogger.com,1999:blog-5411819754291292105.post-54178374086946460982009-12-23T14:12:46.312-08:002009-12-23T14:12:46.312-08:00@love5an
Не, ну применяется или нет, это всегда та...@love5an<br />Не, ну применяется или нет, это всегда такой вопрос вонючий, часто сводится к процентам, а поскольку они неизвестны, то субъективным ощущениям, а вопрос о практичности вообще сплошь субъективный, но в статье, где так много ссылок, нельзя же говорить откровенную неправду, иначе ценность этих ссылок сразу ставиться под сомнение.<br /><br />Да и вообще, кажется автор не настолько разбирается в теме, как хочет казаться. Скажем, в главе про "сопоставление с образцом" нет ни слова про унификацию, что вызывает у меня глубокое недоумение...archimaghttps://www.blogger.com/profile/07997791035847047137noreply@blogger.comtag:blogger.com,1999:blog-5411819754291292105.post-23817617840134038422009-12-23T13:47:10.617-08:002009-12-23T13:47:10.617-08:00Я вот в цитате вижу куда более неприятные посылы:
...Я вот в цитате вижу куда более неприятные посылы:<br />* LISP *был* (да сплыл, видимо)<br />* Common Lisp не применяется на практике<br /><br />Откуда такие мысли у авторов, правда, банальная неграмотность ли это или умышленное искажение фактов с целью представить некоторые ф.я. современнее и практичнее лиспов - я не подозреваю.Anonymousnoreply@blogger.com