Форум программистов, компьютерный форум, киберфорум
Lisp
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
28 / 4 / 1
Регистрация: 08.09.2012
Сообщений: 76
1

Common Lisp

04.11.2013, 22:32. Показов 1144. Ответов 7
Метки нет (Все метки)

Подскажите пожалуйста, а может Common Lisp формировать списки из функций, и (если вдруг может) как?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.11.2013, 22:32
Ответы с готовыми решениями:

Книги или другой источник, где описана история версий Lisp и Common Lisp
Доброго времени суток.Такой вопрос,знаете какой-нибудь источник,где описана история версий Lisp и...

Common lisp
Есть фрагмент программы: (defun game(x y) (cond (( < x y)(print "menshe")(setq y (read))) (( >...

Common lisp
кто поможет решить эти задачи? Перечитайте правила форума. Один вопрос - одна тема. Заголовок...

Вопрос по common lisp
Подскажите пожалуйста как выполнить лисп-программу из txt или какого другого файла?

__________________
7
Модератор
Эксперт Python
28533 / 15403 / 3044
Регистрация: 12.02.2012
Сообщений: 25,232
Записей в блоге: 4
04.11.2013, 22:52 2
Конечно!

Lisp
1
2
3
(mapcar #'(lambda (x) (funcall x 0.5)) '(exp sin cos sqr)) 
 
==> (1.64872127070013 0.479425538604203 0.877582561890373 0.707106781186548)
mapcar применяется к списку функций и вычисляет экспоненту, синус, косинус и кв. корень от 0.5
2
4343 / 3350 / 342
Регистрация: 12.03.2013
Сообщений: 5,838
05.11.2013, 00:14 3
Функции в CL суть "граждане первого класса". Они никак не ущемлены в правах по сравнению с числами, символами или конс-ячейками.
2
28 / 4 / 1
Регистрация: 08.09.2012
Сообщений: 76
05.11.2013, 10:08  [ТС] 4
ну хорошо хоть, что возможно..
а как реализовать список с двумя пользовательскими функциями, чтобы с ними можно было работать?

Lisp
1
2
3
4
5
CL-USER 1 > (defun a (x) (+ x x))
A
 
CL-USER 2 > (defun b (x) (* x x))
B
вот из этих, допустим, функций как составить список типа (А В)?
0
162 / 162 / 22
Регистрация: 23.02.2011
Сообщений: 347
05.11.2013, 10:44 5
Цитата Сообщение от Кровавая Рука Посмотреть сообщение
ну хорошо хоть, что возможно..
а как реализовать список с двумя пользовательскими функциями, чтобы с ними можно было работать?
Lisp
1
2
3
4
CL-USER 1 > (defun a (x) (+ x x))
A
CL-USER 2 > (defun b (x) (* x x))
B
вот из этих, допустим, функций как составить список типа (А В)?
Lisp
1
2
3
4
5
6
(list #'a #'b)
или
(list 'a 'b)
или 
'(a b)
вообще так же как и с другими типами
советую использовать (list #'a #'b) поскольку здесь в списке хранятся не имена функций а их адреса, по этому вызов и будет происходить быстрее
1
28 / 4 / 1
Регистрация: 08.09.2012
Сообщений: 76
05.11.2013, 11:15  [ТС] 6
Цитата Сообщение от Algiz Посмотреть сообщение
(list #'a #'b)
выдаёт:
Lisp
1
2
3
4
5
6
7
8
CL-USER 1 > (defun a (x) (+ x x))
A
 
CL-USER 2 > (defun b (y) (* y y))
B
 
CL-USER 3 > (list #'a #'b)
(#<interpreted function A 20100D32> #<interpreted function B 2010862A>)
а остальные варианты формируют список из символов А и В, и использовать их потом как функции невозможно.
0
Модератор
Эксперт Python
28533 / 15403 / 3044
Регистрация: 12.02.2012
Сообщений: 25,232
Записей в блоге: 4
05.11.2013, 11:31 7
Цитата Сообщение от Кровавая Рука Посмотреть сообщение
и использовать их потом как функции невозможно.
- возможно, через funcall:

Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
(defun f (x) (+ x x))
 
==> f
 
(defun g (x) (* x x))
 
==> g
 
(setq flist (list #'f #'g))
 
==> ((CLOSURE f NIL) (CLOSURE g NIL))
Создана глобальная переменная flist
 
(funcall (car flist) 5)
 
==> 10 ;; 5+5
 
(funcall (cadr flist) 5)
 
==> 25 ;; 5*5
Пример для HomeLisp. В CL тоже будет работать.
1
28 / 4 / 1
Регистрация: 08.09.2012
Сообщений: 76
05.11.2013, 12:27  [ТС] 8
Цитата Сообщение от Catstail Посмотреть сообщение
(setq flist (list #'f #'g))
(funcall (car flist) 5)
а вот это штука работает, спасибо.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.11.2013, 12:27

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Программа на common lisp
Программа на common lisp Прочитать беззнаковое целое число из стандартного потока ввода и в каждом...

Курсы ФП на Common Lisp
Курс функционального программирования стартует 27 февраля на бесплатном образовательном ресурсе...

ООП Common Lisp
Помогите пожалуйста! Реализовать класс: Программа (название, тип, сфера применения, язык...

Common Lisp - Матрица
Помогите решить задачу! 1. Нужно написать функции генерации матрицы и ввода матрицы с клавиатуры...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.