Στηνεπιστήμη των υπολογιστώνμιαανώνυμη συνάρτηση (Αγγλικά: anonymous function ή function literal ή lambda abstraction) είναι ένας ορισμός μιας συνάρτησης ή οποία περιέχει το σώματα της συνάρτησης αλλά δεν περιέχει όνομα (δηλαδή αναγνωριστικό).[1]Οι ανώνυμες συναρτήσεις συνήθως [2]:
Εάν η συνάρτηση χρησιμοποιείται μόνο μια φορά ή για περιορισμό αριθμό κλήσεων τότε μια ανώνυμη συνάρτηση είναι συντακτικά ελαφρύτερη από μια συνάρτηση με όνομα. Οι ανώνυμες συναρτήσεις συναντιούνται συνεχώς στις συναρτησιακές γλώσσες προγραμματισμού αλλά καισε άλλες γλώσσες προγραμματισμού όπου ο ρόλος της συνάρτησης έχει πρωταρχικής χρήσης όπως τα υπόλοιποι τύποι δεδομένων.
Οι ανώνυμες συναρτήσεις προέρχονται από την ανάπτυξη τουλ-λογισμού που έκανε οΑλόνζο Τσέρτςτην δεκαετία του 1930 (πριντην ανάπτυξη των ηλεκτρονικών υπολογιστών). Για παράδειγμα στα μαθηματικά μια συνάρτηση της μορφής μπορεί να γραφτεί ανώνυμα ως .[3]Η συγκεκριμένη μαθηματική συνάρτηση στην python θα γραφόταν ανώνυμα ως (lambda x: x**2 -x + 42). Στο παρακάτω παράδειγμα βλέπουμε την κλήση της συνάρτησης f(x) (ορισμένη μετο όνομα f) καιτην κλήση της ίδιας συνάρτησης ανώνυμα (με lambda έκφραση) [4]στο διερμηνέα της Python:
Στην γλώσσα Haskellη ανώνυμη συνάρτηση λάμδα ορίζεται μετο σύμβολο \που συμβολίζει το ελληνικό γράμμα λκαι εννοεί τον ορισμό συνάρτησης λάμδα [5]. Συγκεκριμένα η κλήση της ίδιας ανώνυμης συνάρτησης στον διερμηνέα (ghci) της γλώσσας Haskellθα γινόταν με τις παρακάτω εντολές:
Prelude>(\x->x^2-x+42)(10)132
Σε διάφορες γλώσσες προγραμματισμού οι ανώνυμες συναρτήσεις ονομάζονται συναρτήσεις λάμδα (Αγγλικά: lambda) ή περιγράφονται ως λάμδα αφαιρέσεις (Αγγλικά: lambda abstractions). Οι ανώνυμες συναρτήσεις είναι μέρος των γλωσσών προγραμματισμού από την γλώσσα προγραμματισμού Lispτο 1958 και σήμερα πολλές σύγχρονες γλώσσες προγραμματισμού υποστηρίζουν ανώνυμες συναρτήσεις (για παράδειγμα η C++11[6]καιη Java 8[7] υποστηρίζουν ανώνυμες/λάμδα συναρτήσεις).
Οι ανώνυμες συναρτήσεις είναι μια μορφή ενθυλακωμένης συνάρτησης, η οποία επιτρέπει πρόσβαση σε μεταβλητές που βρίσκονται μέσα στο πεδίο της συνάρτησης που ενθυλακώνεται. Σε αντίθεση με τις συναρτήσεις με όνομα δεν μπορούν να χρησιμοποιηθούν σε αναδρομή χωρίς την βοήθεια του τελεστή fixpointο οποίος είναι γνωστός και ως anonymous fixpoint ή anonymous recursion.[8]
↑Gastón Hillar (20 Μαΐου 2014). «Lambdas in C++11». Dr. Dobb's. Αρχειοθετήθηκε από το πρωτότυπο στις 21 Νοεμβρίου 2014. Ανακτήθηκε στις 3 Δεκεμβρίου 2014.
↑«Lecture 29: Fixpoints and Recursion». CS3110 Spring 2012 :: Data Structures and Functional Programming. Cornell University - Computer Science. Ανακτήθηκε στις 3 Δεκεμβρίου 2014.