Форум программистов, компьютерный форум, киберфорум
Lisp
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
 Аватар для RUSya82
242 / 120 / 14
Регистрация: 15.10.2010
Сообщений: 395

Каррирование

27.08.2011, 22:03. Показов 2574. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Читаю про каррирование. Почему не работает код из Википедии?:
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
CL-USER 11 > (defun curry(x)
               (lambda (y) (+ x y)))
CURRY
 
CL-USER 12 > ((curry 2) 3)
 
Error: Syntactic error in form ((CURRY 2) 3):
   Illegal function name (CURRY 2).
  1 (abort) Return to level 0.
  2 Return to top loop level 0.
 
Type :b for backtrace, :c <option number> to proceed,  or :? for other options
 
CL-USER 13 : 1 >
Точнее могу вызвать функцию.
З.Ы. Среда LispWorks
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.08.2011, 22:03
Ответы с готовыми решениями:

Каррирование
using System; class MainClass { public static Func&lt;int, int&gt; Sum(int x) { return delegate(int y) { return x + y; ...

Каррирование в JavaScript
Всем привет, вот возник вопрос относительно этой задачи, может подробно объяснить его суть, или если кто-то делал что-то похожее, то и...

Каррирование или карринг
Определение с вики какое-то мутное, кто может объясните пожалуйста поподробнее - что это, для чего и когда применять.

1
Эксперт С++
 Аватар для Nameless One
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
28.08.2011, 05:04
RUSya82, это потому, что ты используешь реализацию языка Common Lisp (который Lisp-2, т.е. имеет разные пространства имен для функций и переменных). Поэтому, нужно использовать funcall:
Lisp
1
2
CL-USER> (funcall (curry 2) 3)
5
В то время как в Scheme (Lisp-1) такой код будет работать:
Lisp
1
2
3
4
5
> (define (curry x)
    (lambda (y)
      (+ x y)))
> ((curry 2) 3)
5
(о том, почему нужно использовать funcall и что такое Lisp-1 и Lisp-2, можно прочитать здесь и здесь).

Более полезной будет такая форма функции curry (для каррирования произвольной функции с произвольным количеством аргументов):
Lisp
1
2
3
(defun curry (func &rest initial-args)
  (lambda (&rest rest-args)
    (apply func (append initial-args rest-args))))
Пример:
Lisp
1
2
3
4
CL-USER> (funcall (curry #'list 1 2 3) 4 5 6)
(1 2 3 4 5 6)
CL-USER> (funcall (curry #'(lambda (x y z) (if x y z)) (> 2 3) 'true) 'false)
FALSE
Вот тут есть альтернативное решение (автоматическое каррирование/частичное применение определяемых функций)
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.08.2011, 05:04
Помогаю со студенческими работами здесь

Для чего нужно каррирование?
Добрый день. Я начал изучать язык F#, дошел до такой фишки как каррирование, вроде понял, что это такое - применение аргументов по одному....

For_each, итераторы, каррирование, шаблоны
Прошу объяснить доступным языком либо дать ссылку на соответствующий материал. 1. Как реализовать алгоритм for_each? 2. Как написать...

Каррирование, как запомнить предыдущий результат
function sum(a) { var currentSum = a; function f(b) { currentSum += b; return f; } f.toString =...

Каррирование: что дает, как применять, где использовать?
Здравствуйте! Начал изучать Haskell. С одной стороны формулировку каррирования я понял. f : (x,y) -&gt; z эквивалентно f:...

Для чего применяется Каррирование в языках высокого уровня?
Добрый день, гуру функционального программирования! Ввиду большого интереса к теории компиляции и в своё время(на 2ом курсе) утраченной...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
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
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru