Funkcje wyzszego rzędu w scheme

0

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)))
1

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)))

0

Ok, dziekuje

1 użytkowników online, w tym zalogowanych: 0, gości: 1