Συναρτήσεις ανώτερου βαθμού
Στα μαθηματικά και στην επιστήμη των υπολογιστών μια συνάρτηση ανώτερου βαθμού (Αγγλικά 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"
Παραπομπές
Επεξεργασία- ↑ (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.
- ↑ Πάνος Ροντογιάννης· Νίκος Παπασπύρου. «Λάμδα Λογισμός» (PDF). Πανεπιστήμιο Αθηνών. Ανακτήθηκε στις 30 Νοεμβρίου 2014.
- ↑ «Higher order functions». learnyouahaskell.com. Ανακτήθηκε στις 3 Δεκεμβρίου 2014.