Большинство языков программирования использует лямбды/закрытия. Какой источник агностика языка рекомендуется как лучшее изучить основы Лямбды?
Лямбды/Закрытия на различных языках:
Если вам просто нужно что-то легко перевариваемое, прочтите Введение в Lambda Calculus и схему . Конечно, это не диагностика языка, но реализация Scheme довольно близка.
Для более глубокого понимания прочтите Типы и языки программирования - Бенджамин Пирс. Теория языка программирования с подробным изучением лямбда-вычисления. Полностью языковая диагностика.
Lambda Calculus - это агностический язык. Ответ зависит от того, что вы подразумеваете под "основами". Момент, когда Вы выбираете любой язык, в котором Вы потеряли свои агностические требования.
Яваскрипт закрыт. Я бы тоже добавил это в список. Ява еще нет.
Я думаю, что она возвращается туда, где ты собираешься их использовать в конечном счете. Возвращайтесь к Lisp или Scheme, так как они - источник, если хотите быть старой школой. Выберите Javascript или C# или Python, если в конечном итоге вы будете использовать их в основном коммерческом языке.
Один из способов его улучшения состоит в том, что вместо чтения строки за строкой можно считывать порции файла в основной памяти и считывать «строку за строкой» из этого буфера. Размер буфера может быть размером кластера на компьютере.
-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 в лямбды .
Я бы не узнал их как «самостоятельный« независимый от языка », сначала. Я бы порекомендовал изучить их практически, сначала используя их в JavaScript, затем расширившись к другому языку (как Lisp, C #). Затем, если вы чувствуете, что нужно идти дальше, узнайте общие теоретические вещи.
Для новичка, желающего изучить теоретические основы, предложение Данбена о книге Пирса является непревзойденным.
Но из списка, который вы даете, звучит так, как будто вы хотите , как эффективно программировать с помощью первоклассных значений функций , что и оценивается в лямбда
. Вы не получите этот опыт, информацию или интуицию в языковом диагностическом пакете. Хуже того, в реальных языках многие анонимные функции создаются посредством частичного применения функций Curried, а не явного лямбда
; большинство людей, использующих первоклассные функции, в значительной степени находят лямбды довольно раздражающими и трудночитаемыми.
На заднем плане, вот два совета:
Если вы не готовы к изучению лямбда
, сделайте что-нибудь со Схемой. Схемам нравятся первоклассные функции, а нотация Scheme заставляет программиста использовать более явные lambdas, чем многие другие функциональные языки.
Как новичок, возможно, вам будет лучше узнать, почему люди хотят использовать эти первоклассные функции для начала. В таком случае, читайте Why Functional Programming Matters by John Hughes. В статье Хьюза используется нотация, которая является в некоторой степени языковой диагностикой; это не нотация какого-либо популярного в настоящее время языка, но она в некоторой степени похожа на Caml, F#, Haskell и ML.