Анонимна функция: Разлика между версии

Изтрито е съдържание Добавено е съдържание
Редакция без резюме
Ред 462:
julia> ((x,y)->x+y)(5,6)
11javascript:void(document.title=location.href);
</syntaxhighlight>
 
=== Lisp ===
[[:en:Lisp_(programming_language)|Lisp]] и [[:en:Scheme_(programming_language)|Scheme]] поддържат анонимните функции изпозвайки "ламбда" конструкции, което е препрадка към [[:en:Lambda_calculus|lambda calculus]]. [[:en:Clojure|Clojure]] поддържа анонимните фукнции с "fn" специално от и #() четящ синтаксис.<syntaxhighlight lang="lisp">
(lambda (arg) (* arg arg))
</syntaxhighlight>
 
==== Scheme ====
Интересно е че, именуваните функции на Scheme е синтактична захар за анунимна функция обвързана с имена:<syntaxhighlight lang="scheme">
(define (somename arg)
(do-something arg))
</syntaxhighlight>разширява (и е еквивалент) на<syntaxhighlight lang="scheme">
(define somename
(lambda (arg)
(do-something arg)))
</syntaxhighlight>
 
==== Clojure ====
Clojure поддържа анонимни функции чрез "Fn" в специална форма:<syntaxhighlight lang="clojure">
(fn [x] (+ x 3))
</syntaxhighlight>Има и синтаксис за определяне на ламбда:<syntaxhighlight lang="clojure">
# (+ % %2 %3) ; Defines an anonymous function that takes three arguments and sums them.
</syntaxhighlight>Също като Scheme, именуваните функции на Clojure са синтактична захар за анунимна функция обвързана с имена:<syntaxhighlight lang="clojure">
(defn func [arg] (+ 3 arg))
</syntaxhighlight>се разширява, до:<syntaxhighlight lang="clojure">
(def func (fn [arg] (+ 3 arg)))
</syntaxhighlight>