<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
					xmlns:content="http://purl.org/rss/1.0/modules/content/"
					xmlns:wfw="http://wellformedweb.org/CommentAPI/"
					xmlns:atom="http://www.w3.org/2005/Atom"
				  >
<channel>
<atom:link rel="self"  type="application/rss+xml"  href="http://rulinux.net/rss_from_sect_4_subsect_10_thread_1522"  />
<title>rulinux.net - Форум - Talks - [lisp] Приколы нашего городка</title>
<link>http://rulinux.net/</link>
<description><![CDATA[Портал о GNU/Linux и не только]]></description>
<image><title>rulinux.net - Форум - Talks - [lisp] Приколы нашего городка</title>
<link>http://rulinux.net/</link>
<url>http://rulinux.net/rss_icon.png</url>
</image>
<item>
<title>Re:[lisp] Приколы нашего городка</title>
<link>https://rulinux.net/message.php?newsid=1522&amp;page=1#11698</link>
<guid>https://rulinux.net/message.php?newsid=1522&amp;page=1#11698</guid>
<pubDate>Sun, 10 May 2009 09:48:59 +0400</pubDate>
<description><![CDATA[<p style="font-style:italic">&gt; Я и привёл пример и mcclim-examples как пример, уж извините за пример-примерный.</p><p>пример вполне корректен и хорош</p><p style="font-style:italic">&gt Кстати, не присоветуете какого нить мануала по написанию генераторов парсеров двоичных протоколов обмена, кроме как чтения сырцы clx до просветления?</p><p>боюсь, что нет. </p>]]></description>
</item>
<item>
<title>Re:[lisp] Приколы нашего городка</title>
<link>https://rulinux.net/message.php?newsid=1522&amp;page=1#11697</link>
<guid>https://rulinux.net/message.php?newsid=1522&amp;page=1#11697</guid>
<pubDate>Sat, 09 May 2009 09:27:39 +0400</pubDate>
<description><![CDATA[<p>s/сырцы/сырцов/ - не проснулся ещё</p>]]></description>
</item>
<item>
<title>Re:[lisp] Приколы нашего городка</title>
<link>https://rulinux.net/message.php?newsid=1522&amp;page=1#11696</link>
<guid>https://rulinux.net/message.php?newsid=1522&amp;page=1#11696</guid>
<pubDate>Sat, 09 May 2009 09:11:52 +0400</pubDate>
<description><![CDATA[<p></p><p>Я и привёл пример и mcclim-examples как пример, уж извините за пример-примерный.</p><p>Однако, как я уже писал, у меня сейчас задача как раз такая, где прибивание типов как раз показано (около половины операций состоит из (setf (ldb (byte ...))), плюс всякие crc и коды Рида-Соломона. </p><p>Кстати, не присоветуете какого нить мануала по написанию генераторов парсеров двоичных протоколов обмена, кроме как чтения сырцы clx до просветления?</p><p>З.Ы. Спасибо за разъяснения.
</p>]]></description>
</item>
<item>
<title>Re:[lisp] Приколы нашего городка</title>
<link>https://rulinux.net/message.php?newsid=1522&amp;page=1#11695</link>
<guid>https://rulinux.net/message.php?newsid=1522&amp;page=1#11695</guid>
<pubDate>Fri, 08 May 2009 22:47:10 +0400</pubDate>
<description><![CDATA[<p style="font-style:italic">&gt; Что-то вроде (and fixnum (integer 0 123)) ?</p><p>да, именно так</p><p style="font-style:italic">&gt перформенс был бы желателен</p><p>Оптимизатор sbcl при надлежаще выставленом declaim optimize генерит множество примечаний относительно возможностей для оптимизации. Оптимизировать довольно сложно, тонкостей много, а код без явных огрехов типа излишних использований функций nth или last или излишних напрягов GC довольно быстр (хотя старт может быть долгим из-за загрузки ВМ, но это принципиальная сложность), так что без реальной надобности браться за низкоуровневую оптимизацию путём ограничения в типах не рекомендую. </p><p style="font-style:italic">&gt меня как то поразил один из примеров mcclim, падающий в дебагер от того, что 0 не float, то ли от того, что 0.d0 не целое.</p><p>Чего же тут удивительного? Это разные типы, и ведут себя по-разному, и если неявное преобразование запрещено, значит нельзя. Тебя ведь не удивляет, что (/ 1 3) и (/ 1.0 3.0) дадут принципиально разный результат?</p>]]></description>
</item>
<item>
<title>Re:[lisp] Приколы нашего городка</title>
<link>https://rulinux.net/message.php?newsid=1522&amp;page=1#11694</link>
<guid>https://rulinux.net/message.php?newsid=1522&amp;page=1#11694</guid>
<pubDate>Fri, 08 May 2009 18:01:55 +0400</pubDate>
<description><![CDATA[<p style="font-style:italic">&gt;Потому что в лисп более сложная система типов, для корректной работы более
пригодна проверка на типы в виде subtypep, и ещё могут действовать
дополнительные ограничения. Например, при наследовании класса :type не
отменяет задекларированный родителем тип, а накладывает на него дополнительные
ограничения.</p><p>Что-то вроде (and fixnum (integer 0 123)) ?</p><p style="font-style:italic">&gtНо вообще задавать и проверять типы на каждый чих неполезно. Хотя указание
типа в основном служит подсказкой для оптимизатора, необдуманное
насильственное указание типа может наоборот значительно ухудшить
быстродействие.</p><p>У меня вольное переложение генератора парсеров двоичных файлов из "практикума", но для хитрых протоколов обмена железок через rs422/485, там таких тонкостей, пока, не предвидится, а вот перформенс был бы желателен. Хотя, если продолжить тему необдуманного прибивания типов, то меня как то поразил один из примеров mcclim, падающий в дебагер от того, что 0 не float, то ли от того, что 0.d0 не целое.</p>]]></description>
</item>
<item>
<title>Re:[lisp] Приколы нашего городка</title>
<link>https://rulinux.net/message.php?newsid=1522&amp;page=1#11693</link>
<guid>https://rulinux.net/message.php?newsid=1522&amp;page=1#11693</guid>
<pubDate>Fri, 08 May 2009 13:45:28 +0400</pubDate>
<description><![CDATA[<p style="font-style:italic">&gt; (declare (type &lt;bla-bla&gt; &lt;имена-слотов&gt;))</p><p>нет, этого делать не нужно, ибо слот не является аналогом переменной-члена класса в с++ или жабе. См. например cells.</p><p style="font-style:italic">&gt а до этого ругалась на пере^Wнесоответствие значения зявленному (ungigned-byte 16). </p><p>Потому что в лисп более сложная система типов, для корректной работы более пригодна проверка на типы в виде subtypep, и ещё могут действовать дополнительные ограничения. Например, при наследовании класса :type не отменяет задекларированный родителем тип, а накладывает на него дополнительные ограничения. Это особенно заметно в хитросплетениях vector, array, sequence, итп.</p><p>Но вообще задавать и проверять типы на каждый чих неполезно. Хотя указание типа в основном служит подсказкой для оптимизатора, необдуманное насильственное указание типа может наоборот значительно ухудшить быстродействие. На эту тему вроде было обсуждение на ЛОР0.</p><p>Также проверка типа не очень полезна из-за наличия мультиметодов, да и при цепочной проверке списка из разнотипных элементов более удобным оказывается нечто вроде (cond ((subtypep ...))).</p><p></p>]]></description>
</item>
<item>
<title>Re:[lisp] Приколы нашего городка</title>
<link>https://rulinux.net/message.php?newsid=1522&amp;page=1#11692</link>
<guid>https://rulinux.net/message.php?newsid=1522&amp;page=1#11692</guid>
<pubDate>Fri, 08 May 2009 05:20:16 +0400</pubDate>
<description><![CDATA[<p>Можно было догадаться уже по поведению sbcl c считалкой crc, которая заработало только с (optimize (safety 0)), а до этого ругалась на пере^Wнесоответствие значения зявленному (ungigned-byte 16). </p><p>З.Ы. Я так понимаю, что для пущей надёжности надо ещё делать (declare (type &lt;bla-bla&gt; &lt;имена-слотов&gt;)) что бы компи^Wреализация сабжевого надязыка не страдала фигнёй по ходу пьесы?</p>]]></description>
</item>
<item>
<title>Re:[lisp] Приколы нашего городка</title>
<link>https://rulinux.net/message.php?newsid=1522&amp;page=1#11691</link>
<guid>https://rulinux.net/message.php?newsid=1522&amp;page=1#11691</guid>
<pubDate>Thu, 07 May 2009 22:13:34 +0400</pubDate>
<description><![CDATA[<p style="font-style:italic">&gt; Надо пологать, что поведение с (optimize (speed 3) (safety 0)) тоже сугубо индивидуально для конкрентой реализации?</p><p>Да, поскольку это сильно зависит от целевой платформы, а стандарт на этот счёт предоставляет достаточную анарх^Wсвободу. </p>]]></description>
</item>
<item>
<title>Re:[lisp] Приколы нашего городка</title>
<link>https://rulinux.net/message.php?newsid=1522&amp;page=1#11690</link>
<guid>https://rulinux.net/message.php?newsid=1522&amp;page=1#11690</guid>
<pubDate>Thu, 07 May 2009 22:11:22 +0400</pubDate>
<description><![CDATA[<p style="font-style:italic">&gt; Выходит от динамической типизации в лиспе никуда не уйдешь</p><p>легко входит, легко выходит... При (declaim (optimize (safety 3))) sbcl на пример со строкой очень даже грязно выругается. Другие имплементации впрочем могут проглотить, ибо согласно пророчеству "are undefined". Собственно, никто не мешает сотворить 
(defmethod (setf sl1) :before (new-sl1 (self cl1)) &lt;сюда пихать проверку типа-и-всего-чего-угодно&gt;), поюзать MOP&#039;овские slot-definition-type, поюзать :writer в качестве опции слота (не забывая, что writer-ов может быть превеликое множество), итд итп. Самое главное - не забывать, что лисп это не язык наподобие висуалвасика но с преламут^Wскопками, а конструктор языков.</p>]]></description>
</item>
<item>
<title>Re:[lisp] Приколы нашего городка</title>
<link>https://rulinux.net/message.php?newsid=1522&amp;page=1#11689</link>
<guid>https://rulinux.net/message.php?newsid=1522&amp;page=1#11689</guid>
<pubDate>Thu, 07 May 2009 19:45:57 +0400</pubDate>
<description><![CDATA[<p>Скорее тут дело всё в том, что я это проверял только в REPL&#039;е, а не на объектах уже скомпилированного класса и уже скомпилированных методах. И таки в clhs резултать нерпределённый.</p>]]></description>
</item>
<item>
<title>Re:[lisp] Приколы нашего городка</title>
<link>https://rulinux.net/message.php?newsid=1522&amp;page=1#11688</link>
<guid>https://rulinux.net/message.php?newsid=1522&amp;page=1#11688</guid>
<pubDate>Thu, 07 May 2009 19:06:18 +0400</pubDate>
<description><![CDATA[<p>Очень странно... От SBCL я никак не ожидал такого. Да и не понятно, почему: он же форкнулся от CMUCL, а там по ссылке написано, что контроль есть. Выходит от динамической типизации в лиспе никуда не уйдешь, и мой аргумент в нашем споре (ты помнишь) все-таки правильный.</p>]]></description>
</item>
<item>
<title>Re:[lisp] Приколы нашего городка</title>
<link>https://rulinux.net/message.php?newsid=1522&amp;page=1#11687</link>
<guid>https://rulinux.net/message.php?newsid=1522&amp;page=1#11687</guid>
<pubDate>Thu, 07 May 2009 18:48:51 +0400</pubDate>
<description><![CDATA[<p>Это CLISP у тебя? SBCL. Но в clisp и ecl таже фигня. Спициально запустил, что бы провирить. Я вообще вначале подумал, что это у меня от недосыпу. </p>]]></description>
</item>
<item>
<title>Re:[lisp] Приколы нашего городка</title>
<link>https://rulinux.net/message.php?newsid=1522&amp;page=1#11686</link>
<guid>https://rulinux.net/message.php?newsid=1522&amp;page=1#11686</guid>
<pubDate>Thu, 07 May 2009 18:46:49 +0400</pubDate>
<description><![CDATA[<p>Упс. Слона то я спросони и не заметил.</p><p>Надо пологать, что поведение с (optimize (speed 3) (safety 0)) тоже сугубо индивидуально для конкрентой реализации?</p>]]></description>
</item>
<item>
<title>Re:[lisp] Приколы нашего городка</title>
<link>https://rulinux.net/message.php?newsid=1522&amp;page=1#11685</link>
<guid>https://rulinux.net/message.php?newsid=1522&amp;page=1#11685</guid>
<pubDate>Thu, 07 May 2009 18:40:03 +0400</pubDate>
<description><![CDATA[<p>Это CLISP у тебя? Просто в CMUCL (а соответственно и в SBCL) контроль типов есть. </p><p><a href="http://common-lisp.net/project/cmucl/doc/cmu-user/extensions.html#toc68">http://common-lisp.net/project/cmucl/doc/cmu-user/extensions.html#toc68</a></p>]]></description>
</item>
<item>
<title>Re:[lisp] Приколы нашего городка</title>
<link>https://rulinux.net/message.php?newsid=1522&amp;page=1#11684</link>
<guid>https://rulinux.net/message.php?newsid=1522&amp;page=1#11684</guid>
<pubDate>Thu, 07 May 2009 18:36:55 +0400</pubDate>
<description><![CDATA[<p><a href="http://www.cs.cmu.edu/Groups/AI/html/hyperspec/HyperSpec/Body/mac_defclass.html#defclass">http://www.cs.cmu.edu/Groups/AI/html/hyperspec/HyperSpec/Body/mac_defclass.html#defclass</a></p><p style="font-style:italic">&gt The consequences of attempting to store in a slot a value that does not satisfy the type of the slot are undefined.</p>]]></description>
</item>
<item>
<title>Re:[lisp] Приколы нашего городка</title>
<link>https://rulinux.net/message.php?newsid=1522&amp;page=1#11683</link>
<guid>https://rulinux.net/message.php?newsid=1522&amp;page=1#11683</guid>
<pubDate>Thu, 07 May 2009 16:10:06 +0400</pubDate>
<description><![CDATA[<p><a href="http://paste.lisp.org/display/79836">http://paste.lisp.org/display/79836</a> </p><p>Как то так</p>]]></description>
</item>
<item>
<title>[lisp] Приколы нашего городка</title>
<link>https://rulinux.net/message.php?newsid=1522&amp;page=1#11682</link>
<guid>https://rulinux.net/message.php?newsid=1522&amp;page=1#11682</guid>
<pubDate>Thu, 07 May 2009 16:03:49 +0400</pubDate>
<description><![CDATA[<p>CL-USER&gt; (defclass cl1 ()
	   ((sl1 :initarg :sl1 :accessor sl1 :type (unsigned-byte 8) :initform 0)))
#&lt;STANDARD-CLASS CL1&gt;
CL-USER&gt; (type-of (sl1 (make-instance &#039;cl1)))
BIT
CL-USER&gt; (type-of (sl1 (make-instance &#039;cl1 :sl1 2)))
(INTEGER 0 536870911)
CL-USER&gt; (type-of (sl1 (make-instance &#039;cl1 :sl1 "a")))
(SIMPLE-ARRAY CHARACTER (1))</p><p>
Чего то я в этой жизни не понимаю, например как беззнаковое целое может быть строкой.</p>]]></description>
</item>
</channel>
</rss>