Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Lisp
Перезагрузить страницу Как прервать цикл While или Repeat
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
imported_Ежик imported_Ежик вне форума
Новичок
 
Сообщений: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 01.10.2003
По умолчанию Как прервать цикл While или Repeat - 14.10.2003, 10:39

[b][i]

Кто знает как прервать цикл While или Repeat???
Ответить с цитированием
  (#2 (permalink)) Старый
Anonymous
Guest
 
Сообщений: n/a
По умолчанию В Коммон Лиспе? - 15.10.2003, 06:28

В Коммон Лиспе я никогда не использовал (return) . Но именно этот макрос можно применять для выхода из циклов. Вот пример его работы:
Код:
(let ((i 0))
  (while t
    (incf i)
    (if (< i 10)
        (format t "~A~%" i)
      (return))))
Ещё можешь использовать оператор (return-from ...). Правда я не знаю что ему нужно давать, но что-то давать точно нужно.

P.S.
Вообще, хорошо было бы указать о каком Лиспе ты ведёшь речь? Если не ясно зачем это нужно, то прочти первый параграф на странице http://lisp.narod.ru/msg.html#_Toc15723500. Я подозреваю что тебе нужен Лисп который используется в Автокаде, а посему мой ответ может тебе не помочь.
Ответить с цитированием
  (#3 (permalink)) Старый
imported_Ежик imported_Ежик вне форума
Новичок
 
Сообщений: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 01.10.2003
По умолчанию Re:// - 15.10.2003, 13:42


[b][i]
В общем ты был прав прерывание то что ты дал не помогло, и да Лисп это тот что под Автокад...
Ответить с цитированием
  (#4 (permalink)) Старый
Mnior Mnior вне форума
Member
 
Сообщений: 487
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 19.12.2002
По умолчанию Re: Циклы - 15.10.2003, 17:16

[quote][b][i]Кто знает как прервать цикл While или Repeat??? нужен? Что, разве без него не обойтись, изменив условие цикла?

Импиративный подход в декларативных языках? Ню-ню! GoTo вредно постоянно юзать даже в них.
Ответить с цитированием
  (#5 (permalink)) Старый
Anonymous
Guest
 
Сообщений: n/a
По умолчанию Опять 25! - 15.10.2003, 18:27

Да причём здесь декларативность и императивность! Дело не в этом. В Лиспе возможно и нормально использовать различные конструкции. Главное понимать зачем и почему отдаётся предпочтение тому или иному подходу. В этом есть одна из положительных сторон Лиспа. Для наглядной иллюстрации привожу следующий пример:
Код:
(defun f(n)
  (do ((i n (- i 1))
       (f 1 (* f i)))
      ((= i 0) f)))
Ф-ия f вычисляет факториал. Она написана в императивной форме. Ну и какие проблемы то?

Цитата:
Стоп! Не понял, а зачем этот return нужен? Что, разве без него не обойтись, изменив условие цикла?
1. (return ...) возвращяет указанное значение (или NIL) после мягкого выхода из блока. Например, это может пригодиться во время отладки программ.

2. Речь идёт о Лиспе для Автокада. Хоть это и потомок Лиспа, но важно понимать что это язык ОБСЛУЖИВАЮЩИЙ конкретную програмную среду. А это значит что программист пишущий на нём обязан следовать традициям установленным разработчиком програмной среды.
Ответить с цитированием
Ads.
  (#6 (permalink)) Старый
Mnior Mnior вне форума
Member
 
Сообщений: 487
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 19.12.2002
По умолчанию Re: Опять 25! - 16.10.2003, 18:55

Цитата:
Originally posted by Tyro
[b]
Код:
(defun f(n)
  (do ((i n (- i 1))
       (f 1 (* f i)))
      ((= i 0) f)))
Ф-ия f вычисляет факториал. Она написана в императивной форме. Ну и какие проблемы то?
Непонял? Где здесь императивность?
Блин. Лисп считается (считался) функциональным языком и следовательно декларативным. Если считаешь, что он "может быть" императивным, то обоснуй по подробней.
Короче, дай твоё определение импиративности.
Цитата:
Originally posted by Tyro
[b]1. (return ...) возвращяет указанное значение (или NIL) после мягкого выхода из блока. Например, это может пригодиться во время отладки программ.
Во первых: Return описан в определении этих функций. Или это подобие GOTO?
А во вторых: наличие "интерфейсных" функции не говорит о импиративности языка. В ПроЛоге тоже есть консрукции которые логически не верны, а работают, но ПроЛог декларативный язык.
Цитата:
Originally posted by Tyro
[b]2. ... но важно понимать что это язык ОБСЛУЖИВАЮЩИЙ конкретную програмную среду. А это значит что программист пишущий на нём обязан следовать традициям установленным разработчиком програмной среды.
Вовсе нет. Разработчик среды не даром выбрал ЛИСП.
Как эти традиции разработчик проявлял?
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
repeat в VP 7.3 posleg Prolog 4 13.06.2011 00:31
Как правильно прописать цикл repeat D1zz1 Pascal 1 08.06.2011 11:57
как прервать установку винды Babai4 Windows XP 18 13.05.2011 19:23
Предикат concat с помощью repeat-цикла Ground Prolog 40 07.05.2011 20:04
табуляции функции с помощью циклов While,Repeat,For. vetadia Pascal 0 28.10.2010 01:36
frontstr by repeat redcat Prolog 4 14.12.2009 20:50
Как прервать операцию AZzz C++ Builder 5 12.02.2008 08:05
Как прервать завершение программы Neyel C++ Builder 2 02.11.2007 14:52
как прервать макрос программно? ZakidonЦ Visual Basic 2 15.10.2004 15:12
Repeat через отображающие функционалы rye Lisp 1 29.05.2004 03:18
Как прервать цикл вычисления на С++ ads Visual C++ 6 13.10.2003 14:07



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов