<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=126383&amp;view=findpost&amp;p=956515</guid>
        <pubDate>Thu, 22 Dec 2005 06:23:06 +0000</pubDate>
        <title>;;Lisp programma &amp;#33;??</title>
        <link>https://forum.sources.ru/index.php?showtopic=126383&amp;view=findpost&amp;p=956515</link>
        <description><![CDATA[Alexey Dejneka: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '> Скажите пожалуйста как задавать и выводить данные из<br>
функции.... </div></div><br>
<br>
Как правило, реализация CL включает в себя REPL -<br>
цикл &quot;чтение-вычисление-печать&quot;. Так что Вы просто вводите<br>
выражение, система его считывает, вычисляет и распечатывает<br>
результат. Если Вам нужно получить не только конечный результат,<br>
но и, скажем, промежуточные данные, можно использовать PRINT или<br>
FORMAT.<br>
<br>
CL-USER&gt; <span class='tag-u'>(sort (list 5 3 2 8 7) #&#39;&gt;)</span><br>
(8 7 5 3 2)<br>
CL-USER&gt; <span class='tag-u'>(defun sorting (l)<br>
           (format t &quot;Processing ~S...~%&quot; l)<br>
           (cond ((null l) nil)<br>
                 (t (insert (car l) (sorting (cdr l))))))</span><br>
SORTING<br>
CL-USER&gt; <span class='tag-u'>(sorting &#39;(5 3 2 8 7))</span><br>
Processing (5 3 2 8 7)...<br>
Processing (3 2 8 7)...<br>
Processing (2 8 7)...<br>
Processing (8 7)...<br>
Processing (7)...<br>
Processing NIL...<br>
(2 3 5 7 8)<br>
<br>
(подчеркнут вводимый текст)<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>(в Ufasoft Common Lisp-е v3.2.7)</div></div><br>
Запустил я Ufasoft Common Lisp...<br>
<br>
Вы знаете, язык Common Lisp - это стандарт, у которого существует<br>
множество реализаций. Для Windows я обычно рекомендую<br>
LispWorks (<a class='tag-url' href='http://www.lispworks.com' target='_blank'>www.lispworks.com</a>).<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Можно-ли как-нибудь сделать, так чтобы после проверки<br>
списка и НЕнахождения позиции атома... Функция переходила-бы<br>
сразу к функции (INSERTION-вставки)</div></div><br>
<br>
Ничего не понял. Какой результат Вы хотите получить? Функция,<br>
которая возвращает положение элемента в списке, если он есть, или<br>
обновленный список, если его нет?<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">(defun find-position-or-insert (item list)</div><div class="code_line">&nbsp;&nbsp;(let ((position (position item list)))</div><div class="code_line">&nbsp;&nbsp; &nbsp;(if position</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;position</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;(insert item list))))</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>когда я применил данный способ записи *DEFUN SORTING (L)*<br>
вместо *(DEFUN SORTING(LAMBDA (L))* ПРОГА наконецтаки начала<br>
распознавать(DEFUN)</div></div><br>
<br>
Неудивительно.<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '><br>
(define position(lambda (x lst)<br>
...<br>
(PRINT (position 5 &#39;(1 5 4 6 2 3)))<br>
</div></div><br>
<br>
Я не знаю, как Ufalisp относится к DEFINE, но повторяю еще раз:<br>
POSITION - это стандартная функция, которая уже есть в системе.<br>
Переопределять ее, тем более несовместимым образом (как Вы<br>
делаете), значит напрашиваться на большие неприятности. Если<br>
Ufalisp ваш DEFINE не понял и просто проигнорировал, то POSITION,<br>
естественно, продолжал работать как раньше. Кстати, та строка<br>
напечатала 1 (как полагается по стандарту) или 2 (как работает<br>
Ваш POSITION)?]]></description>
        <author>Alexey Dejneka</author>
        <category>Lisp</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=126383&amp;view=findpost&amp;p=956377</guid>
        <pubDate>Wed, 21 Dec 2005 21:28:01 +0000</pubDate>
        <title>;;Lisp programma &amp;#33;??</title>
        <link>https://forum.sources.ru/index.php?showtopic=126383&amp;view=findpost&amp;p=956377</link>
        <description><![CDATA[CompilR: ЕЩЁ РАЗ (ВСЕМ) ЗДРАВСТВУЙТЕ&#33;&#33;&#33;<br>БОЛЬШОЕ СПАСИБО ВСЕМ КТО ОТКЛИКНУЛСЯ&#33;&#33;&#33;&#33;<br>СПАСИБО ЗА ПРЕДОСТАВЛЕННУЮ мне ПОМОЩЬ &#33;&#33;&#33;&#33;&#33;&#33;<br>/********************************************/<br>Извените &quot;конечно&quot;, но у меня по выше изложенному материалу появились некоторые вопросы.<br>ВЫ могли-бы на них ответить???&#33;?<br>/********************************************/<br><br>Вопросы:<br>1.Скажите пожалуйста как задавать и выводить данные из функции....(в Ufasoft Common Lisp-е v3.2.7)<br>Ну например:<br>Если вернуться к сортировки неупорядоченного списка.<br>;;-----------------------------------------;;<br>(DEFUN SORTING (L)<br>  ;; Сортировка неупорядоченного списка L<br>  (COND ((NULL L) NIL)<br>        (T (INSERT (CAR L) (SORTING (CDR L))))))<br>;;-----------------------------------------;;<br>&quot;как - бы я посоветовался со знающими людьми(в нашей группе по Лиспу)&quot;. Мне сказали, что выводить данные нужно с помощью (*PRINT*)<br>Посмотрите пожалуйста, так ИЛИ НЕ ТАК нужно это делать:<br>(PRINT(SORTING &#39;(1 2 3 5 4))) //и в ответе машина напишет что-то вроде этого(1 2 3 4 5)?????<br>%(ну т.е. как правильно записать запрос системе и самое главное получить на него ответ)<br>P.S.<br>     Если ЭТО возможно, то поправте меня....<br>2.Вот например из первого моего сообщения <br>производится ПОИСК позиции &quot;атома&quot; &quot;...(POSITION (X LST)&quot;,т.е существует 2-а положения<br>1) когда он проверяет список и находит позицию<br>2) и когда &quot;атом&quot; отстутсвует(он возвращает &quot;nil&quot;)<br>Можно-ли как-нибудь сделать, так чтобы после проверки списка и НЕнахождения позиции атома...<br>Функция переходила-бы сразу к функции (INSERTION-вставки)<br>Сделать как-нибудь ссылку или что-то в этом роде. ИЛИ чтобы не нагружаться сделать всё по порядку(я с точки зрения составления программы).<br>***************************<br>Да. Кстати по поводу СОРТИРОВКИ: когда я применил данный способ записи *DEFUN SORTING (L)* вместо *(DEFUN SORTING(LAMBDA (L))* ПРОГА наконецтаки начала распознавать(DEFUN).<br>Вот ещё попробывал данную структуру и уменя получилось(вместо DEFUN поставил DEFINE)<br>/----------------------------------------/<br>(define position(lambda (x lst)<br>(cond((null lst) 0)<br>((eq x(car lst)) 1)<br>(t(+ 1(position x(cdr lst))))))) // ну соответственно спросил(данный запрос подошёл)<br>                                 //*(PRINT(position 5 &#39;(1 5 4 6 2 3)))*<br>/----------------------------------------/<br>В других случаях это не сработало...<br>СПАСИБО ЗА ВНИМАНИЕ &#33;&#33;&#33;&#33;&#33;]]></description>
        <author>CompilR</author>
        <category>Lisp</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=126383&amp;view=findpost&amp;p=954278</guid>
        <pubDate>Tue, 20 Dec 2005 05:41:26 +0000</pubDate>
        <title>;;Lisp programma &amp;#33;??</title>
        <link>https://forum.sources.ru/index.php?showtopic=126383&amp;view=findpost&amp;p=954278</link>
        <description><![CDATA[Alexey Dejneka: В Common Lisp определение функции записывается так:<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">(DEFUN SORTING (L)</div><div class="code_line">&nbsp;&nbsp;;; Сортировка неупорядоченного списка L</div><div class="code_line">&nbsp;&nbsp;(COND ((NULL L) NIL)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;(T (INSERT (CAR L) (SORTING (CDR L))))))</div></ol></div></div></div></div><br>
<br>
В Scheme можно писать примерно так, как Вы написали, но нужно сделать множество<br>
мелких изменений (s/defun/define/, s/null/null?/, s/t/#t/, s/nil/&#39;()/ и т.д.)<br>
<br>
Еще две проблемы. В Common Lisp уже есть функция POSITION, и переопределять ее нежелательно. Назовите ее как-нибудь типа MY-POSITION. Также нельзя сравнивать числа на равенство с помощью EQ: пользуйтесь EQL. С этими изменениями программа работает.<br>
<br>
И, если компилятор сильно не постарается, POSITION будет работать квадратичное время от длины списка.]]></description>
        <author>Alexey Dejneka</author>
        <category>Lisp</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=126383&amp;view=findpost&amp;p=954270</guid>
        <pubDate>Tue, 20 Dec 2005 05:07:46 +0000</pubDate>
        <title>;;Lisp programma &amp;#33;??</title>
        <link>https://forum.sources.ru/index.php?showtopic=126383&amp;view=findpost&amp;p=954270</link>
        <description><![CDATA[Platonis: Тебе повезло парниша, попал ты куда надо. Я честно сказать еще &quot;вчера&quot; приходил сюда спрашивать по лиспу задачки. Нашлись добрые люди. Теперь настала моя очередь продолжить этот цикл, и надеюсь, что ты последуешь этой доброй традиции. Можешь кстати посмотреть мои задачки... &quot;Ученая блоха&quot; и &quot;all-permutations&quot; с заголовками Этот...Лисп.<br>
<br>
Вот решение твоей задачи такой какой я её понял, правда не понял <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=126383&view=findpost&p=954232'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>CompilR &#064; <time class="tag-quote__quoted-time" datetime="2005-12-20T00:52:29+00:00">20.12.05, 00:52</time></span><div class='quote '>которая бы выполняла поиск со <span class='tag-u'>всавкой</span></div></div><br>
Что это значит?<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">(defun search (lst el inserter)</div><div class="code_line">&nbsp;&nbsp; &nbsp;(cond ((null lst) nil)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(t (search_r lst el inserter &#39;()))</div><div class="code_line">&nbsp;&nbsp; &nbsp;)</div><div class="code_line">)</div><div class="code_line">(defun search_r (lst el inserter res)</div><div class="code_line">&nbsp;&nbsp; &nbsp;(cond ((null lst) (reverse res))</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(t(search_r (cdr lst) el inserter (cons (car lst)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(cond ((equal (car lst) el) (cons inserter res))</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(t res) </div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;) </div><div class="code_line">&nbsp;&nbsp; &nbsp;)</div><div class="code_line">)</div><div class="code_line">(defun ts()</div><div class="code_line">&nbsp;&nbsp; &nbsp;(search &#39;(1 2 3 5) &#39;3 &#39;(4 1 2))</div><div class="code_line">)</div></ol></div></div></div></div><br>
<br>
Работает это все в XLisp... Но у меня досовская, а такую врагу не пожелаешь..<br>
Ну, надеюсь на тесное сотрудничество...<br>
<br>
P. S. ты случаем не из ИжГТУ? <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2005-12-20T05:10:39+00:00">20.12.05, 05:10</time></span></span><br>
Кстати, тут есть хороший человек, <strong class='tag-b'>Alexey Dejneka</strong>, он тут похоже ас по Лиспу, мне по двум задачкам помог, большое ему спасябо...]]></description>
        <author>Platonis</author>
        <category>Lisp</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=126383&amp;view=findpost&amp;p=954232</guid>
        <pubDate>Tue, 20 Dec 2005 00:52:29 +0000</pubDate>
        <title>;;Lisp programma &amp;#33;??</title>
        <link>https://forum.sources.ru/index.php?showtopic=126383&amp;view=findpost&amp;p=954232</link>
        <description><![CDATA[CompilR: Здравствуйте (или ВСЕМ ПРИВЕТ &#33;&#33;&#33;), ВЫ могли-бы мне помочь в составлении программы и в разъяснении некоторых нюансов ?&#33;?<br>Всё по порядку:<br>1. &quot;Как бы сказать помягче ???&quot;: В какой реализации Lisp-a можно сделать данную ПРОГУ ??&#33;?<br>2. я приведу 3-и функции:<br>; ---------------------------- ;<br>   (DEFUN  POSITION (LAMBDA (X LST)<br>   ; Функция  POSITION  возвращает  положение атома X ;<br>   ; в одноуровневом списке LST (первый элемент имеет ;<br>   ; номер 1). Если элемента в списке нет, то функция ;<br>   ;                возвращает 0                      ;<br>      (COND ( (NULL LST)       0 )<br>            ( (EQ X (CAR LST)) 1 )<br>            ( (MEMBER X LST)<br>                 (+ 1 (POSITION X (CDR LST))) )<br>            ( T  0 )<br>      )<br>   ))<br>   ; ----------------------- ;<br>(DEFUN SORTING (LAMBDA (L)<br>   ; Сортировка неупорядоченного списка L ;<br>      (COND ( (NULL L) NIL )<br>            (   T   (INSERT (CAR L) (SORTING (CDR L))) )<br>      )<br>   ))<br>   ; ----------------------- ;<br>   (DEFUN INSERT (LAMBDA (A L)<br>   ; Функция INSERT добавляет элемент A в упорядоченный ;<br>   ;   список L так, чтобы сохранилась упорядоченность  ;<br>      (COND ( (NULL L) (LIST A) )<br>            ( (&lt; A (CAR L)) (CONS A L) )<br>            (   T   (CONS (CAR L) (INSERT A (CDR L))) )<br>      )<br>   ))<br>   ; -------------------------- ;<br><br>P.S.: Моя задача была сделать программу на LISP-е, которая бы выполняла поиск со всавкой.<br>Скажите ПОЖАЛУЙСТА КАК эти функции соединить, чтобы реализовать эту прогу(или совмещать вместе их &quot;Опасно для жизни&quot;)&#33;?&#33;?&#33;<br>Да и Если можно, приведите пожалуйста пример по вводимым входным данным.<br>Потому что, когда я пытался сделать ПРОСТУЮ сортировку СПИСКА в Common LISP-е:<br>  ; -------------------------- ;<br>(DEFUN SORTING (LAMBDA (L)<br>   ; Сортировка неупорядоченного списка L ;<br>      (COND ( (NULL L) NIL )<br>            (   T   (INSERT (CAR L) (SORTING (CDR L))) )<br>      )<br>   )) <br>  ; -------------------------- ;<br>   (SORTING &#39;(5 4 3 2 1 6))<br>  ; -------------------------- ;<br>Он на меня ругался &quot;CELL-ERROR,UNDEFINED FUNCTION и др.&quot;<br>Но после того как устанавливал вместо &quot;DEFUN&quot; &quot;DEFINE&quot; &quot;мата&quot; становилось меньше.<br>ПРОСВЕТИТЕ МЕНЯ КТО-НИБУДЬ&#33;&#33;&#33;&#33;    <br>ЗАРАНЕЕ БОЛЬШОЕ СПАСИБО&#33;&#33;&#33;]]></description>
        <author>CompilR</author>
        <category>Lisp</category>
      </item>
	
      </channel>
      </rss>
	