Kõrgemat järku funktsioon
Kõrgemat järku funktsioon on funktsioon, mis võtab funktsioone parameetritena ja/või tagastab funktsiooni.[1]
Näited
[muuda | muuda lähteteksti]Järgnevad näited on toodud programmeerimiskeeltes Scheme ja JavaScript.
Näide funktsioonist argumendina
[muuda | muuda lähteteksti]Defineerime funktsiooni find
, mis läbib massiivi ja kontrollib selle iga elemendi vastavust etteantud predikaatfunktsioonile pred. Kui pred tagastab mõne massiivielemendi korral tõeväärtuse true
, siis tagastab funktsioon vastava elemendi, vastasel juhul tagastab ta tõeväärtuse false
.
(define (find pred lst)
(cond ((null? lst) #f)
((pred (car lst)) (car lst))
(else (find pred (cdr lst)))))
(find (lambda (x) (> x 3)) '(1 2 3 4 5 6 7)) ;; Tagastab 4
function findInArray(pred, arr) {
for (var i=0; i<arr.length; i++) {
if (pred(arr[i]) {
return arr[i];
}
}
return false;
}
find(function(x){return x>10;}, [1, 2, 3, 4, 5, 6, 7]); // Tagastab false
Näide funktsioonist tagastatava väärtusena
[muuda | muuda lähteteksti]Defineerime funktsiooni negate
, mis võtab funktsiooni f ja tagastab funktsiooni, mis tagastab tõeväärtuse true
, kui f tagastab false
, ning tõeväärtuse false
, kui f tagastab true
. Järgnevates näidetes oletame, et meil on olemas funktsioon even
, mis tagastab true
, kui selle ainsaks sisendparameetriks on paarisarv. Kasutades funktsiooni negate
, loome funktsiooni odd
, mis tagastab true
, kui selle ainus sisendparameeter on paaritu arv:
(define negate (f)
(lambda (x)
(not (f x))))
(even 4) ;; Tagastab true
(even 5) ;; Tagastab false
(define odd (negate even))
(odd 4) ;; Tagastab false
(odd 5) ;; Tagastab true
function negate(f) {
return function(x) {
return !f(x);
};
}
even(4); // Tagastab true
even(5); // Tagastab false
var odd = negate(even);
odd(4); // Tagastab false
odd(5); // Tagastab true
Viited
[muuda | muuda lähteteksti]- ↑ Kurt Nørmark. "Introduction to higher-order functions". Functional Programming in Scheme. Originaali arhiivikoopia seisuga 10. juuni 2007. Vaadatud 5. aprillil 2010.