Witam, chciałem się zapytać które poniższych wyrażen jest poprawnie zapisaną funkcją wyższego rzędu w scheme i dlaczego ?
1. (define f(lambda (x y z) (* x y z))
2. (define (f x y)(define (f z) (* x y z)))
Witam, chciałem się zapytać które poniższych wyrażen jest poprawnie zapisaną funkcją wyższego rzędu w scheme i dlaczego ?
1. (define f(lambda (x y z) (* x y z))
2. (define (f x y)(define (f z) (* x y z)))
Ogólnie funkcja wyższego rzędu to funkcja która przyjmuje inną funkcję lub ją zwraca:
Ad.1 (define f (lambda (x y z) (* x y z)))
- tu masz zwykła deklarację funkcji (btw poprawiłem przykład), jest to równoważne temu: (define (f x y z) (* x y z))
Ad.2 (define (f x y)(define (f z) (* x y z)))
- to wyglada jak funkcja wyższego rzędu (zwraca funkcję), ale to chyba nie jest poprawny zapis, to zadziała na pewno: (define (f x y) (lambda (z) (* x y z)))
Ok, dziekuje
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.