Каков лучший независимый от языка источник для изучения Lambdas / Closures? - PullRequest
7 голосов
/ 16 января 2010

Большинство языков программирования используют лямбда-выражения / замыкания. Какой языковой источник не рекомендуется для изучения основ лямбды?

Лямбды / затворы на разных языках:

Ответы [ 5 ]

8 голосов
/ 16 января 2010

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

Для более глубокого понимания прочитайте Типы и языки программирования - Бенджамин Пирс. Теория языка программирования с тщательным изучением лямбда-исчисления. Полностью не зависит от языка.

4 голосов
/ 16 января 2010

Я думаю, что лямбда является самой простой в Лиспе, так как она была разработана для такого рода вещей и из диалектов, Схема имеет тенденцию быть самой простой.когда-либо написанное использует схему!Вот введение SICP в лямбды .

3 голосов
/ 16 января 2010

Лямбда-исчисление не зависит от языка. Ответ зависит от того, что вы подразумеваете под «основами». В тот момент, когда вы выбираете любой язык, вы теряете свои агностические требования.

У Javascript есть замыкания. Я бы добавил это и в список. Java нет - пока.

Я думаю, что это возвращается к тому, где вы собираетесь использовать их в конце концов. Вернитесь к Lisp или Scheme, так как они являются источником, если вы хотите быть старой школой. Выберите Javascript, C # или Python, если вы в конечном итоге будете использовать их на распространенном коммерческом языке.

2 голосов
/ 17 января 2010

Для новичка, желающего изучить теоретические основы, предложение Данбена о книге Пирса непобедимо.

Но из списка, который вы даете, звучит так, как будто вы знаете, как эффективно программировать с первоклассными значениями функций , что lambda оценивает. Вы не получите этот опыт, информацию или интуицию в не зависящем от языка пакете. Хуже того, в реальных языках многие анонимные функции создаются с помощью частичного применения функций Curried , а не с помощью явных lambda; большинство людей используют первоклассные функции, которые считают лямбды довольно раздражающими и трудными для чтения.

Имея это в качестве фона, вот два совета:

  • Если вы не знаете, что такое lambda, сделайте что-нибудь со Схемой. Программисты любят первоклассные функции, а обозначения Схемы навязывают программисту больше явных лямбд, чем во многих других функциональных языках.

  • Будучи новичком, вам, возможно, будет лучше узнать, почему люди хотят использовать эти первоклассные функции для начала. В этом случае прочитайте Почему функциональное программирование имеет значение Джона Хьюза. В статье Хьюза используется обозначение, которое несколько не зависит от языка; это не обозначение какого-либо популярного в настоящее время языка, но оно несколько похоже на Caml, F #, Haskell и ML.

1 голос
/ 16 января 2010

Во-первых, я бы не изучал их как «независимую от языка» вещь. Я бы порекомендовал изучить их на практике, сначала используя их в Javascript, а затем расширив их до другого языка (например, lisp, C #). Затем, если вы чувствуете необходимость идти дальше, изучите общие теоретические вещи.

...