Что лучший независимый от языка источник должен изучить Лямбды/Закрытия?

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

Лямбды/Закрытия на различных языках:

7
задан Kb. 30 January 2010 в 10:48
поделиться

5 ответов

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

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

8
ответ дан 6 December 2019 в 10:50
поделиться

Lambda Calculus - это агностический язык. Ответ зависит от того, что вы подразумеваете под "основами". Момент, когда Вы выбираете любой язык, в котором Вы потеряли свои агностические требования.

Яваскрипт закрыт. Я бы тоже добавил это в список. Ява еще нет.

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

3
ответ дан 6 December 2019 в 10:50
поделиться

Один из способов его улучшения состоит в том, что вместо чтения строки за строкой можно считывать порции файла в основной памяти и считывать «строку за строкой» из этого буфера. Размер буфера может быть размером кластера на компьютере.

-121--3702303-

Я установил cygwin на корень. Это явно предостерегает вас от этого, но я не видел никаких негативных последствий. (Я нашел этот совет от Стива Егге).

Я также установил cygwin-mount , который помогает связке. Кроме того, мне пришлось переключиться с ispell на aspell. Наконец, немного подправки .emacs, и я был рад пойти:

;;;;;;;;;;;;;;;;;;;;;;
;;CygForTheWin
;;*cygwin
(when (equal system-type 'windows-nt) 
(message "Setting up Cygwin...")
(let* ((cygwin-root "c:")
       (cygwin-bin (concat cygwin-root "/bin"))
       (gambit-bin "/usr/local/Gambit-C/4.0b22/bin/")
       (snow-bin "/usr/local/snow/current/bin")
       (mysql-bin "/wamp/bin/mysql/mysql5.0.51a/bin/"))
   (setenv "PATH" (concat cygwin-bin ";" ;
                          snow-bin ";" 
                          gambit-bin ";"
                          mysql-bin ";"
                          "c:/usr/local/jdk1.60_03/bin/"
                          ".;")  
           (getenv "PATH"))
   (setq exec-path (cons cygwin-bin exec-path)))

(require 'cygwin-mount)
(cygwin-mount-activate)

(setq shell-file-name "bash")
(setq explicit-shell-file-name "bash")

(defun jonnay-cygwin-shell ()
  "Wrapper around cygwin-shell so that it doesn't throw an error"
  (interactive)
  (condition-case e
   (cygwin-shell)
   (message "There was an error trying to launch the shell: %s" e)))

(message "Setting up Cygwin...Done")


;; found from the manual, check, use and make go?
 (defun my-shell-setup ()
   "For Cygwin bash under Emacs 20"
   (setq comint-scroll-show-maximum-output 'this)
   (setq comint-completion-addsuffix t)
   (setq comint-eol-on-send t)
   (setq w32-quote-process-args ?\")
   (make-variable-buffer-local 'comint-completion-addsuffix))

(setq shell-mode-hook 'my-shell-setup)
(add-hook 'emacs-startup-hook 'jonnay-cygwin-shell)
)
-121--1163905-

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

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

4
ответ дан 6 December 2019 в 10:50
поделиться

Я бы не узнал их как «самостоятельный« независимый от языка », сначала. Я бы порекомендовал изучить их практически, сначала используя их в JavaScript, затем расширившись к другому языку (как Lisp, C #). Затем, если вы чувствуете, что нужно идти дальше, узнайте общие теоретические вещи.

1
ответ дан 6 December 2019 в 10:50
поделиться

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

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

На заднем плане, вот два совета:

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

  • Как новичок, возможно, вам будет лучше узнать, почему люди хотят использовать эти первоклассные функции для начала. В таком случае, читайте Why Functional Programming Matters by John Hughes. В статье Хьюза используется нотация, которая является в некоторой степени языковой диагностикой; это не нотация какого-либо популярного в настоящее время языка, но она в некоторой степени похожа на Caml, F#, Haskell и ML.

2
ответ дан 6 December 2019 в 10:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: