Kõrgemat järku funktsioon

Allikas: Vikipeedia

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]

  1. Kurt Nørmark. "Introduction to higher-order functions". Functional Programming in Scheme. Originaali arhiivikoopia seisuga 10. juuni 2007. Vaadatud 5. aprillil 2010.