Ανώνυμη συνάρτηση

Από τたうηいーた Βικιπαίδεια, τたうηいーたνにゅー ελεύθερη εγκυκλοπαίδεια

Σしぐまτたうηいーたνにゅー επιστήμη τたうωおめがνにゅー υπολογιστών μみゅーιいおたαあるふぁ ανώνυμη συνάρτηση (Αγγλικά: anonymous function ή function literal ή lambda abstraction) είναι ένας ορισμός μιας συνάρτησης ή οποία περιέχει τたうοおみくろん σώματα της συνάρτησης αλλά δでるたεいぷしろんνにゅー περιέχει όνομα (δηλαδή αναγνωριστικό).[1] Οおみくろんιいおた ανώνυμες συναρτήσεις συνήθως [2]:

  1. περνιούνται ως παράμετροι σしぐまεいぷしろん συναρτήσεις ανώτερου βαθμού, ή
  2. ή δημιουργούν ως αποτέλεσμα συναρτήσεις ανώτερου βαθμού πぱいοおみくろんυうぷしろん χρειάζεται νにゅーαあるふぁ επιστρέψει μみゅーιいおたαあるふぁ συνάρτηση.

Εάν ηいーた συνάρτηση χρησιμοποιείται μόνο μみゅーιいおたαあるふぁ φορά ή γがんまιいおたαあるふぁ περιορισμό αριθμό κλήσεων τότε μみゅーιいおたαあるふぁ ανώνυμη συνάρτηση είναι συντακτικά ελαφρύτερη από μみゅーιいおたαあるふぁ συνάρτηση μみゅーεいぷしろん όνομα. Οおみくろんιいおた ανώνυμες συναρτήσεις συναντιούνται συνεχώς στις συναρτησιακές γλώσσες προγραμματισμού αλλά κかっぱαあるふぁιいおた σしぐまεいぷしろん άλλες γλώσσες προγραμματισμού όπου οおみくろん ρόλος της συνάρτησης έχει πρωταρχικής χρήσης όπως τたうαあるふぁ υπόλοιποι τύποι δεδομένων.

Οおみくろんιいおた ανώνυμες συναρτήσεις προέρχονται από τたうηいーたνにゅー ανάπτυξη τたうοおみくろんυうぷしろん λらむだ-λογισμού πぱいοおみくろんυうぷしろん έκανε οおみくろん Αλόνζο Τσέρτς τたうηいーたνにゅー δεκαετία τたうοおみくろんυうぷしろん 1930 (πぱいρろーιいおたνにゅー τたうηいーたνにゅー ανάπτυξη τたうωおめがνにゅー ηλεκτρονικών υπολογιστών). Γがんまιいおたαあるふぁ παράδειγμα σしぐまτたうαあるふぁ μαθηματικά μみゅーιいおたαあるふぁ συνάρτηση της μορφής μπορεί νにゅーαあるふぁ γραφτεί ανώνυμα ως .[3] Ηいーた συγκεκριμένη μαθηματική συνάρτηση σしぐまτたうηいーたνにゅー python θしーたαあるふぁ γραφόταν ανώνυμα ως (lambda x: x**2 -x + 42). Σしぐまτたうοおみくろん παρακάτω παράδειγμα βλέπουμε τたうηいーたνにゅー κλήση της συνάρτησης f(x) (ορισμένη μみゅーεいぷしろん τたうοおみくろん όνομα f) κかっぱαあるふぁιいおた τたうηいーたνにゅー κλήση της ίδιας συνάρτησης ανώνυμα (μみゅーεいぷしろん lambda έκφραση) [4] σしぐまτたうοおみくろん διερμηνέα της Python:

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

Σしぐまτたうηいーたνにゅー γλώσσα 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]

Παραπομπές[Επεξεργασία | επεξεργασία κώδικα]

  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.