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

Από testwiki
Μετάβαση στην πλοήγηση Πήδηση στην αναζήτηση

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

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

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

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"

Παραπομπές