Συναρτήσεις ανώτερου βαθμού
αγγλικά : Higher-order function
γαλλικά :
γερμανικά :
Στα μαθηματικά και στην επιστήμη των υπολογιστών μια συνάρτηση ανώτερου βαθμού (Αγγλικά higher-order function ή functional form ή functional ή functor) είναι μια μαθηματική συνάρτηση που έχει τα παρακάτω χαρακτηριστικά [1]:
παίρνει μια ή περισσότερες συναρτήσεις ως είσοδο
επιστρέφει μια συνάρτηση ως έξοδο
Οι υπόλοιπες συναρτήσεις θεωρούνται πρώτου βαθμού συναρτήσεις. Στο λάμβδα-λογισμό όλες οι συναρτήσεις θεωρούνται συναρτήσεις ανώτερου βαθμού που παίρνουν τιμές στην μορφή \( {\displaystyle (\tau _{1}\to \tau _{2})\to \tau _{3}\to \tau _{4}} \) (που σημαίνει ότι έχουμε ως είσοδο μια συνάρτηση από τ 1 → τ 2 {\displaystyle \tau _{1}\to \tau _{2}} {\displaystyle \tau _{1}\to \tau _{2}} και η έξοδος είναι μια νέα συνάρτηση \( {\displaystyle \tau _{3}\to \tau _{4}}) \). [2] Ως παράδειγμα συνάρτησης ανώτερου βαθμού να πάρουμε την συνάρτηση applyTwice η οποία παίρνει ως είσοδο μια συνάρτηση και επιστρέφει την συνάρτηση εφαρμοσμένη δύο φορές. Παρακάτω είναι η συνάρτηση ορισμένη στην γλώσσα Haskell και έχει τύπο ( a → a ) → a → a {\displaystyle (a\to a)\to a\to a} {\displaystyle (a\to a)\to a\to a} (που σημαίνει ότι παίρνει ως είσοδο μια συνάρτηση \( {\displaystyle (a\to a)} \) και επιστρέφει μια νέα συνάρτηση a → a {\displaystyle a\to a} {\displaystyle a\to a}):
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.CS1 maint: Extra text: authors list (link)
Πάνος Ροντογιάννης. «Λάμδα Λογισμός» (PDF). Πανεπιστήμιο Αθηνών. Ανακτήθηκε στις 30 Νοεμβρίου 2014.
«Higher order functions». learnyouahaskell.com. Ανακτήθηκε στις 3 Δεκεμβρίου 2014.
Hellenica World - Scientific Library
Από τη ελληνική Βικιπαίδεια http://el.wikipedia.org . Όλα τα κείμενα είναι διαθέσιμα υπό την GNU Free Documentation License