Συναρτήσεις ανώτερου βαθμού

Από τη Βικιπαίδεια, την ελεύθερη εγκυκλοπαίδεια

Στα μαθηματικά και στην επιστήμη των υπολογιστών μια συνάρτηση ανώτερου βαθμού (Αγγλικά higher-order function ή functional form ή functional ή functor) είναι μια μαθηματική συνάρτηση που έχει τα παρακάτω χαρακτηριστικά [1]:

  • παίρνει μια ή περισσότερες συναρτήσεις ως είσοδο
  • επιστρέφει μια συνάρτηση ως έξοδο

Οι υπόλοιπες συναρτήσεις θεωρούνται πρώτου βαθμού συναρτήσεις. Στο λάμβδα-λογισμό όλες οι συναρτήσεις θεωρούνται συναρτήσεις ανώτερου βαθμού που παίρνουν τιμές στην μορφή (που σημαίνει ότι έχουμε ως είσοδο μια συνάρτηση από και η έξοδος είναι μια νέα συνάρτηση ). [2] Ως παράδειγμα συνάρτησης ανώτερου βαθμού να πάρουμε την συνάρτηση applyTwice η οποία παίρνει ως είσοδο μια συνάρτηση και επιστρέφει την συνάρτηση εφαρμοσμένη δύο φορές. Παρακάτω είναι η συνάρτηση ορισμένη στην γλώσσα Haskell και έχει τύπο (που σημαίνει ότι παίρνει ως είσοδο μια συνάρτηση και επιστρέφει μια νέα συνάρτηση ):

applyTwice :: (a -> a) -> a -> a  
applyTwice f x = f (f x)

Τρέχουμε μερικά παραδείγματα με την παραπάνω συνάρτηση στον διερμηνέα ghci της Haskell. Στο πρώτο παράδειγμα τρέχει δύο φορές την συνάρτηση / τελεστή πολλαπλασιασμού στην τιμή του 10 και αποτιμάται η έκφραση (2*10)*2. Στο δεύτερο παράδειγμα τρέχει η συνάρτηση ένωσης λιστών με χαρακτήρες ++ δύο φορές πάνω στην λίστα/αλφαριθμητικό χαρακτήρων εκτελώντας την έκφραση ("example" ++ " 1") + " 1". [3]

*Main> applyTwice (*2) 10
40
*Main> applyTwice (++ " 1") "example"
"example 1 1"

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

  1. (eds.), Jurriaan Hage, Marco T. Morazán (2011). Implementation and application of functional languages : 22nd International Symposium, IFL 2010, Alphen AAN Den Rijn, The Netherlands, September 1-3, 2010 : revised selected papers. Berlin [u.a.]: Springer. σελ. 143. ISBN 978-3-642-24275-5. CS1 maint: Extra text: authors list (link)
  2. Πάνος Ροντογιάννης· Νίκος Παπασπύρου. «Λάμδα Λογισμός» (PDF). Πανεπιστήμιο Αθηνών. Ανακτήθηκε στις 30 Νοεμβρίου 2014. 
  3. «Higher order functions». learnyouahaskell.com. Ανακτήθηκε στις 3 Δεκεμβρίου 2014.