-207 / 93 / 14
Регистрация: 26.06.2013
Сообщений: 4,604
|
|
1 | |
Условный выход из функции: PROG RETURN07.05.2020, 20:40. Показов 2287. Ответов 63
Метки нет (Все метки)
Пока не понимаю, что делает prog? Знаю про prog1, prog2, progn.
Здесь http://www.mari-el.ru/mmlab/ho... index.html написано Если локальных переменных нет записывается (prog ()...) это не понимаю. В коде написано (prog (x y); локальные переменные Пока насчет локальных переменных с помощью prog не понял. Читал про let.
0
|
07.05.2020, 20:40 | |
Ответы с готовыми решениями:
63
Выход из рекурсивного метода не осуществляется по Return Выход из блока using через return. Произойдет ли Dispose()? Запишите с использованием предложения PROG функцию (аналог встроенной функции LENGTH ) Что это isOk(int s),setAge(int g){if(isOk(g){age=g;return true;}else{.;return false;}}.getName(){return name;}? |
-207 / 93 / 14
Регистрация: 26.06.2013
Сообщений: 4,604
|
|
08.05.2020, 06:23 [ТС] | 2 |
Ездаков Функциональное и логическое программирование 2009
Страница 14
0
|
-207 / 93 / 14
Регистрация: 26.06.2013
Сообщений: 4,604
|
|
08.05.2020, 06:50 [ТС] | 3 |
Из "Ознакомительная работа в среде MuLisp"
5. Передача управления. На Лиспе можно писать программы и в обычном операторном стиле с использованием передачи управления. Однако во многих системах не рекомендуется использовать эти предложения, так как их можно заменить другими предложениями (например DO) и, как правило, в более понятной форме. Но мы рассмотрим предложения передачи управления, хотя использовать их не следует. Код
(PROG (m1 m2 ... mn) оператор1 оператор2 ... операторm) (GO метка) GO не вычисляет значение своего «аргумента». Кроме этого, в PROG-механизм входит оператор окончания вычисления и возврата значения: (RETURN результат) Операторы предложения PROG вычисляются слева направо (сверху вниз), пропуская метки перехода. Оператор RETURN прекращает выполнение предложения PROG; в качестве значения всего предложения возвращается значение аргумента оператора PROG. Если во время вычисления оператор RETURN не встретился, то значением PROG после вычисления его последнего оператора станет NIL . После вычисления значения формы связи программных переменных исчезают.
0
|
Модератор
|
|
08.05.2020, 07:07 | 4 |
И что же конкретно непонятно? Все верно написано. Вот мое изложение
1
|
-207 / 93 / 14
Регистрация: 26.06.2013
Сообщений: 4,604
|
|
08.05.2020, 07:41 [ТС] | 5 |
Мир лиспа, том 2
С первого раза на днях не осилил. Возможно при повторном прочтении лучше пойму. Ещё описание Prog есть в следующей литературе (в ряде случаев не совсем понятно написано). Лавров С.С., Силагадзе Г.С. - Автоматическая обработка данных. Язык ЛИСП и его реализация (1978) Страницы 31, 90 Мир лиспа, том 1. Страница 139 Н. Ю. Салмина - Функциональное программирование и интеллектуальные системы-ТУСУР Томск (2016) Страница 57 Семенова Е.Т. - Язык программирования LISP 1.5 Страницы 52, 53 Фролов Г.Д., Кузнецов Э.И. - Элементы информатики (1989) Страница 257. Пол Грэм - ANSI Common Lisp-Символ-Плюс (2012) Страница 327 Городняя Л.В., Березин Н.А - Введение в программирование на Лиспе Страница 116 Городняя Л.В. - Введение в программирование на языке LISP Страница 75 Маурер Введение в программирование на языке ЛИСП (1976) Е.И. Большакова, Н.В. Груздева Основы программирования на языке Лисп 2010 Страница 103
0
|
Модератор
|
|
08.05.2020, 08:24 | 6 |
В отошении замечания Ездакова, о том, "что с введением PROG Лисп пошел под откос" - думаю, что он совершенно не прав! Никто никогда не заставлял лисперов использовать PROG. Не может дополнительная возможность навредить. Не нужна - не пользуйся!
0
|
-207 / 93 / 14
Регистрация: 26.06.2013
Сообщений: 4,604
|
|||||||||||
08.05.2020, 13:29 [ТС] | 7 | ||||||||||
Подскажите, есть ли ошибка в скобках? Как правильно вызывать?
Е.И. Большакова, Н.В. Груздева Основы программирования на языке Лисп 2010 Страница 103. В качестве примера использования prog приведём ещё одно определение функции Reverse:
А этот код нужно переделывать, чтобы он запускался в современном интерпретаторе или должно работать так? Маурер Введение в программирование на языке ЛИСП (1976) Страница 59 В качестве примера всех этих понятий мы рассмотрим нерекур- сивную программу, которая может быть записана на ФОРТРАНе или АЛГОЛе для нахождения факториала целого числа: Здесь идут примеры этого кода на других языках.
делены в конце программы. Первая из них связана с левой скоб- кой перед PROG. В общем случае после последнего оператора, записанного в PROG, используются три правые скобки, если в том же DEFINE-выражении определяются еще какие-либо функции; и пять правых скобок в противном случае.
0
|
-207 / 93 / 14
Регистрация: 26.06.2013
Сообщений: 4,604
|
|
08.05.2020, 13:32 [ТС] | 8 |
Маурер Введение в программирование на языке ЛИСП (1976)
Страница 58.
0
|
Модератор
|
||||||
08.05.2020, 13:56 | 9 | |||||
- есть.
supmener, замечание Mayрера по Cond неактуально. И его книга сильно устарела. Есть же книга П.Грэма...
1
|
-207 / 93 / 14
Регистрация: 26.06.2013
Сообщений: 4,604
|
|
08.05.2020, 14:43 [ТС] | 10 |
Почему не актуально?
Там по этому поводу очень мало написано, несколько строк. TIMES - это вместо знака умножения DIFFERENCE - это вместо знака вычитания (- 8 2) => 6
0
|
-207 / 93 / 14
Регистрация: 26.06.2013
Сообщений: 4,604
|
||||||
08.05.2020, 17:36 [ТС] | 12 | |||||
0
|
-207 / 93 / 14
Регистрация: 26.06.2013
Сообщений: 4,604
|
||||||
09.05.2020, 12:28 [ТС] | 14 | |||||
А если писать построчно, то правильно получается? А какую команду ввести дальше, чтобы разом всё не решилось и понятьненько чтобы получилось?
0
|
-207 / 93 / 14
Регистрация: 26.06.2013
Сообщений: 4,604
|
||||||
25.05.2020, 20:50 [ТС] | 16 | |||||
Почему то не работает.
Из книги автора Н. Ю. Салмина - Функциональное программирование и интеллектуальные системы-ТУСУР Томск (2016) (Страница 58) Рассмотрим реализацию функции REVERSE без рекурсии, но с использованием PROG-выражения.
0
|
4486 / 2721 / 485
Регистрация: 28.04.2012
Сообщений: 8,590
|
|
25.05.2020, 21:10 | 17 |
0
|
-207 / 93 / 14
Регистрация: 26.06.2013
Сообщений: 4,604
|
|
25.05.2020, 21:59 [ТС] | 18 |
Код
WARNING: redefining COMMON-LISP:REVERSE in DEFUN debugger invoked on a SYMBOL-PACKAGE-LOCKED-ERROR in thread #<THREAD "main thread" RUNNING {23170329}>: Lock on package COMMON-LISP violated when setting fdefinition of REVERSE while in package COMMON-LISP-USER. See also: The SBCL Manual, Node "Package Locks" The ANSI Standard, Section 11.1.2.1.2 Type HELP for debugger help, or (SB-EXT:EXIT) to exit from SBCL. restarts (invokable by number or by possibly-abbreviated name): 0: [CONTINUE ] Ignore the package lock. 1: [IGNORE-ALL ] Ignore all package locks in the context of this operation. 2: [UNLOCK-PACKAGE] Unlock the package. 3: [ABORT ] Exit debugger, returning to top level. (PACKAGE-LOCK-VIOLATION #<PACKAGE "COMMON-LISP"> :SYMBOL REVERSE :FORMAT-CONTROL "setting fdefinition of ~A" :FORMAT-ARGUMENTS (REVERSE)) 0] Код
ВНИМАНИЕ: переопределение COMMON-LISP: ОБРАТНО в DEFUN отладчик вызван на SYMBOL-PACKAGE-LOCKED-ERROR в потоке # <THREAD "main thread" RUNNING {23170329}>: Блокировка пакета COMMON-LISP нарушена при установке определения REVERSE пока в пакете COMMON-LISP-USER. Смотрите также: Руководство SBCL, узел "Пакетные замки" Стандарт ANSI, раздел 11.1.2.1.2 Введите HELP для справки отладчика или (SB-EXT: EXIT) для выхода из SBCL. перезапуск (вызывается по номеру или, возможно, сокращенному названию): 0: [ПРОДОЛЖЕНИЕ] Игнорировать блокировку пакета. 1: [IGNORE-ALL] Игнорировать все блокировки пакетов в контексте этой операции. 2: [UNLOCK-PACKAGE] Разблокировать пакет. 3: [ABORT] Выход из отладчика, возврат на верхний уровень. (PACKAGE-LOCK-VIOLATION # <PACKAGE "COMMON-LISP">: СИМВОЛ ОБРАТНЫЙ: ФОРМАТ-КОНТРОЛЬ ", устанавливающий определение ~ A": ФОРМАТ-АРГУМЕНТЫ (ОБРАТНЫЙ)) 0]
0
|
-207 / 93 / 14
Регистрация: 26.06.2013
Сообщений: 4,604
|
||||||
26.05.2020, 16:27 [ТС] | 19 | |||||
Почему то просит ввести число после того, как оно введено.
0
|
4527 / 3521 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
|
|
26.05.2020, 16:33 | 20 |
Я буквально вчера-позавчера писал вам про организацию интерактивного ввода-вывода. В частности, там есть ответ на ваш вопрос. Перепишете как положено - будет работать как положено.
0
|
26.05.2020, 16:33 | |
26.05.2020, 16:33 | |
Помогаю со студенческими работами здесь
20
Условный экстремум функции Условный оператор в функции? Условный оператор. Функции Условный Экстремум функции Условный оператор, табулирование функции. Исследование функции на условный экстремум Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |