|
14 / 14 / 7
Регистрация: 11.05.2013
Сообщений: 225
|
|
"Функции более высокого порядка. Функциональный аргумент, функциональное значение. Способы композиции функций" - композиции и функции высокого порядка30.08.2013, 23:46. Показов 4959. Ответов 16
Метки нет (Все метки)
Идут 2 вопроса подряд:
"Локальные определения (форма LET). Функции более высокого порядка. Функциональный аргумент, функциональное значение. Способы композиции функций." Что имеется в виду под "функциями более высокого порядка" и "способами композиции функций" ? Предполагаю, что последнее - это "композиции функционалов", но я не понимаю, что имеется в виду под этим выражением. Может полный список вопросов поможет прояснить что-нибудь насчет "высоких порядков". Список вопросов
1. Базовые функции обработки списков. 2. Определение и вызов функций с помощью λ-выражений. λ-список, λ-преобразование. Свободные и связанные переменные. Функция DEFUN 3. Локальные определения (форма LET). 4. Функции более высокого порядка. Функциональный аргумент, функциональное значение. Способы композиции функций. 5. Автоматическое управление памятью в Лиспе. «Сборка мусора». 6. Создайте Лисп-список, представляющий собой список планет Солнечной системы. 7. Почему значения в Лиспе представлены указателями? 8. Определите функцию add5(n), которая увеличивает числовой параметр n на 5. 9. Определите функцию add5(n), которая увеличивает числовой параметр n на 5, используя синтаксис λ-определения. 10. Суперпозиция (или «композиция») функций как средство формирования более сложных функций. 11. Какую (двоякую) роль играет в Лиспе функция eval? 12. Возвращение функцией нескольких величин. 13. Базовые функции Лиспа. 14. Опишите три варианта предиката равенства в Лиспе.
0
|
|
| 30.08.2013, 23:46 | |
|
Ответы с готовыми решениями:
16
Бесконечно малые функции более высокого порядка малости
Каким образом можно использовать функции высокого порядка |
|
Супер-модератор
|
||||||||||||||||
| 31.08.2013, 21:44 | ||||||||||||||||
|
Если просто: функциональный аргумент - это аргумент функции, который сам является функцией. Например,
функционал mapcar (при самом простом способе применения) требует два аргумента: функцию и список. mapcar применяет свой аргумент к каждому элементу списка, а из полученных результатов строит список-результат.
О функциональном значении говорят, когда функция возвращает результат, который сам является функцией. Вот пример (HomeLisp), но будет работать и в Common Lisp:
2
|
||||||||||||||||
|
14 / 14 / 7
Регистрация: 11.05.2013
Сообщений: 225
|
|||||||
| 31.08.2013, 22:18 [ТС] | |||||||
|
С функциональными аргументами понятно. А в остальном, простите, ничего не понял.
2. Что такое умножитель? 3. И что делает CLOSURE? Почитал про замыкания, но насколько я понял, это просто глобальные переменные, использующиеся в функции. "Замыкание (англ. closure) в программировании — функция, в теле которой присутствуют ссылки на переменные, объявленные вне тела этой функции/" :
4. Про свободные и связанные переменные ясно, но к чему это?
0
|
|||||||
|
Супер-модератор
|
||||||||||||||||
| 31.08.2013, 22:36 | ||||||||||||||||
|
Начну с конца:
4. Свободные и связанные переменные - это вопрос из твоего-же списка (№2) 3. Теперь про замыкание. Нет, это не просто "глобальные переменные, использующиеся в функции". Замыкание - это функция, с зафиксированными (на момент вызова) значениями свободных переменных. 2. Я назвал функцию multer (умножитель). Взглянем на нее еще раз:
Добавлено через 4 минуты Ну, и локальное определение (LET). Это способ создания локальных переменных:
1
|
||||||||||||||||
|
14 / 14 / 7
Регистрация: 11.05.2013
Сообщений: 225
|
|||
| 31.08.2013, 23:01 [ТС] | |||
|
Хорошо, тогда что это значит: "(setq *3" ? На месте звезды с тройкой обычно стоит переменная, и запись кажется странной. Добавлено через 17 минут Можете еще на вопрос из списка ответить, пожалуйста? "7. Почему значения в Лиспе представлены указателями?" Нашел только это: "Все значения в Common Lisp, по крайней мере концептуально, являются ссылками на объекты4). Поэтому присваивание переменной нового значения изменяет то, на какой объект ссылается переменная (то есть, куда ссылается переменная), но не оказывает никакого влияния на объект, на который переменная ссылалась ранее. Однако, если переменная содержит ссылку на изменяемый объект, вы можете использовать данную ссылку для изменения этого объекта, и это изменение будет видимо любому коду, который имеет ссылку на этот же объект. Один из способов введения новой переменной вы уже использовали при определении параметров функции. Как вы видели в предыдущей главе, при определении функции с помощью DEFUN список параметров определяет переменные, которые будут содержать аргументы, переданные функции при вызове. Например, следующая функция определяет три переменные для хранения своих аргументов: x, y и z. (defun foo (x y z) (+ x y z)) При каждом вызове функции, Lisp создает новые привязки (bindings) для хранения аргументов, переданных при вызове этой функции. Привязка является проявлением переменной во время выполнения. Отдельная переменная — сущность, на которую вы можете сослаться в исходном коде своей программы — может иметь множество различных привязок за время выполнения программы. Отдельная переменная даже может иметь множество привязок в одно и то же время: параметры рекурсивной функции, например, связываются заново (rebound) при каждом вызове этой функции." Но ответа на вопрос "почему" текст выше не дает.
0
|
|||
|
1075 / 968 / 113
Регистрация: 04.11.2012
Сообщений: 1,013
|
||||||
| 31.08.2013, 23:02 | ||||||
|
Из книги "Основы функционального программирования." Лидия Васильевна Городняя.
umc55555 Вопрос. А откуда эти задания? Сами учите, или преподают?
1
|
||||||
|
14 / 14 / 7
Регистрация: 11.05.2013
Сообщений: 225
|
|
| 31.08.2013, 23:06 [ТС] | |
|
0
|
|
|
Супер-модератор
|
|||||||||||||||||||||
| 31.08.2013, 23:16 | |||||||||||||||||||||
|
На последний вопрос ответить совсем просто: *3 - это атом Лиспа (символ), который может быть имененм переменной!
А с первым вопросом я немного виноват. Правильнее сказать - но момент определения. Посмотрим еще раз на multer:
Другой способ создать замыкание - определить обычную функцию в теле let:
"Почему значения в Лиспе представлены указателями?" - я бы ответил вопросом на вопрос: а чем их можно еще представить в Лиспе?
2
|
|||||||||||||||||||||
|
14 / 14 / 7
Регистрация: 11.05.2013
Сообщений: 225
|
|||
| 01.09.2013, 14:24 [ТС] | |||
|
С остальным вроде понятно. Даже способы композиций нашел.
1
|
|||
|
14 / 14 / 7
Регистрация: 11.05.2013
Сообщений: 225
|
|||
| 01.09.2013, 16:00 [ТС] | |||
|
Добавлено через 33 секунды А насчет указателей?
0
|
|||
|
Супер-модератор
|
|
| 01.09.2013, 16:14 | |
|
Почему в Лиспе значения есть адреса. Если бы значения являлись бы самими объектами, то их передача/возврат из функций требовала бы громадного стекового пространства... Кстати, и в C/С++ передача объекта по значению требует заметно бОльших ресурсов - и стековое пространство, и лишние вызовы конструкторов/деструкторов и т.д.
1
|
|
|
14 / 14 / 7
Регистрация: 11.05.2013
Сообщений: 225
|
|
| 01.09.2013, 16:21 [ТС] | |
|
Если переменные - области памяти, то каждый раз при нужде выделяется новая область памяти под новую переменную. Если переменные - указатели, то каждый раз при нужде указатель показывает на новую область памяти.
Как-то так, хоть и немного корявые формулировки. По идее получается, что память одинаково используется что там, что там. Вот с конструкторами и деструкторами - это вариант. А насчет стекового пространства не очень ясно. Можно какой-нибудь простенький пример, пожалуйста?
0
|
|
|
Супер-модератор
|
|
| 01.09.2013, 16:28 | |
|
"По идее получается, что память одинаково используется что там, что там." - совершенно верно.
Теперь о стеке. Как осуществляется передача по значению чего-либо более сложного, чем простая переменная. 1) создается копия этого "чего-либо" 2) в вызывающую функцию передается адрес копии теперь вопрос: где создавать копию? Самое правильное место - в стеке! (При возврате память автоматически освободится)
1
|
|
|
14 / 14 / 7
Регистрация: 11.05.2013
Сообщений: 225
|
||
| 01.09.2013, 16:37 [ТС] | ||
|
Точно. Отлично, большое спасибо.
P. S. * не нашел "Привязка является проявлением переменной во время выполнения." Можно еще маленький вопрос.. Что значит "проявление переменной во время выполнения" ? Слово "проявление" напрягает.
0
|
||
|
14 / 14 / 7
Регистрация: 11.05.2013
Сообщений: 225
|
|
| 01.09.2013, 22:05 [ТС] | |
|
Спасибо.
0
|
|
| 01.09.2013, 22:05 | |
|
Помогаю со студенческими работами здесь
17
Как правильно задать функцию Бесселя с поправочными членами более высокого порядка Определение арности предикатов более низкого порядка при использовании предикатов более высокого
Функция высокого порядка
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод.
Thinkpad X220 Tablet —. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|