Στην επιστήμη των υπολογιστών μια **ανώνυμη συνάρτηση** (Αγγλικά: *anonymous function* ή *function literal* ή *lambda abstraction*) είναι ένας ορισμός μιας συνάρτησης ή οποία περιέχει το σώματα της συνάρτησης αλλά δεν περιέχει όνομα (δηλαδή αναγνωριστικό). Οι ανώνυμες συναρτήσεις συνήθως :

1. περνιούνται ως παράμετροι σε συναρτήσεις ανώτερου βαθμού, ή
2. ή δημιουργούν ως αποτέλεσμα συναρτήσεις ανώτερου βαθμού που χρειάζεται να επιστρέψει μια συνάρτηση.

Εάν η συνάρτηση χρησιμοποιείται μόνο μια φορά ή για περιορισμό αριθμό κλήσεων τότε μια ανώνυμη συνάρτηση είναι συντακτικά ελαφρύτερη από μια συνάρτηση με όνομα. Οι ανώνυμες συναρτήσεις συναντιούνται συνεχώς στις συναρτησιακές γλώσσες προγραμματισμού αλλά και σε άλλες γλώσσες προγραμματισμού όπου ο ρόλος της συνάρτησης έχει πρωταρχικής χρήσης όπως τα υπόλοιποι τύποι δεδομένων.

Οι ανώνυμες συναρτήσεις προέρχονται από την ανάπτυξη του λ-λογισμού που έκανε ο Αλόνζο Τσέρτς την δεκαετία του 1930 (πριν την ανάπτυξη των ηλεκτρονικών υπολογιστών). Για παράδειγμα στα μαθηματικά μια συνάρτηση της μορφής {\displaystyle f(x)=x^{2}-x+42} μπορεί να γραφτεί ανώνυμα ως {\displaystyle x\rightarrow x^{2}-x+42}. Η συγκεκριμένη μαθηματική συνάρτηση στην python θα γραφόταν ανώνυμα ως *(lambda x: x\*\*2 -x + 42)*. Στο παρακάτω παράδειγμα βλέπουμε την κλήση της συνάρτησης f(x) (ορισμένη με το όνομα f) και την κλήση της ίδιας συνάρτησης ανώνυμα (με lambda έκφραση)  στο διερμηνέα της Python:

```
>>> def f (x): return x\*\*2 -x + 42
...
>>> f(10)
132
>>> (lambda x: x\*\*2 -x + 42) (10)
132

```

Στην γλώσσα Haskell η ανώνυμη συνάρτηση λάμδα ορίζεται με το σύμβολο *\* που συμβολίζει το ελληνικό γράμμα λ και εννοεί τον ορισμό συνάρτησης λάμδα. Συγκεκριμένα η κλήση της ίδιας ανώνυμης συνάρτησης στον διερμηνέα (ghci) της γλώσσας Haskell θα γινόταν με τις παρακάτω εντολές:

```
Prelude> (\x -> x^2 -x + 42) (10)
132

```

Σε διάφορες γλώσσες προγραμματισμού οι ανώνυμες συναρτήσεις ονομάζονται συναρτήσεις *λάμδα* (Αγγλικά: *lambda*) ή περιγράφονται ως *λάμδα αφαιρέσεις* (Αγγλικά: *lambda abstractions*). Οι ανώνυμες συναρτήσεις είναι μέρος των γλωσσών προγραμματισμού από την γλώσσα προγραμματισμού Lisp το 1958 και σήμερα πολλές σύγχρονες γλώσσες προγραμματισμού υποστηρίζουν ανώνυμες συναρτήσεις (για παράδειγμα η C++11 και η Java 8 υποστηρίζουν ανώνυμες/λάμδα συναρτήσεις).

Οι ανώνυμες συναρτήσεις είναι μια μορφή ενθυλακωμένης συνάρτησης, η οποία επιτρέπει πρόσβαση σε μεταβλητές που βρίσκονται μέσα στο πεδίο της συνάρτησης που ενθυλακώνεται. Σε αντίθεση με τις συναρτήσεις με όνομα δεν μπορούν να χρησιμοποιηθούν σε αναδρομή χωρίς την βοήθεια του τελεστή *fixpoint* ο οποίος είναι γνωστός και ως *anonymous fixpoint* ή *anonymous recursion*.

Παραπομπές
----------

1. ↑  «Lambda Expressions in C++». microsoft.com. Ανακτήθηκε στις 3 Δεκεμβρίου 2014.
2. ↑  «Higher order functions». learnyouahaskell.com. Ανακτήθηκε στις 3 Δεκεμβρίου 2014.
3. ↑  Πάνος Ροντογιάννης· Νίκος Παπασπύρου. «Λάμδα Λογισμός» (PDF). Πανεπιστήμιο Αθηνών. Ανακτήθηκε στις 30 Νοεμβρίου 2014.
4. ↑  McKinney, Wes (2013). *Python for data analysis* (1 Aufl. έκδοση). Sebastopol, Calif.: O'Reilly. σελ. 424. ISBN 978-1-449-31979-3.
5. ↑  Sorge, Volker. «Haskell: Lambda Expressions» (PDF). University of Birmingham. Ανακτήθηκε στις 3 Δεκεμβρίου 2014.
6. ↑  Gastón Hillar (20 Μαΐου 2014). «Lambdas in C++11». Dr. Dobb's. Αρχειοθετήθηκε από το πρωτότυπο στις 21 Νοεμβρίου 2014. Ανακτήθηκε στις 3 Δεκεμβρίου 2014.
7. ↑  Cay S. Horstmann (25 Μαρτίου 2014). «Lambda Expressions in Java 8». Dr. Dobb's. Αρχειοθετήθηκε από το πρωτότυπο στις 2 Δεκεμβρίου 2014. Ανακτήθηκε στις 3 Δεκεμβρίου 2014.
8. ↑  «Lecture 29: Fixpoints and Recursion». *CS3110 Spring 2012 :: Data Structures and Functional Programming*. Cornell University - Computer Science. Ανακτήθηκε στις 3 Δεκεμβρίου 2014.