Wie kann man zwei zweistellige Funktionen mittels compose miteinander verbinden?
z.B. x+y und x*y
Versuche compose und curry ganz zu verstehen..
Da beide funktionen zweistellig sind, aber nach der auswertung nur ein wert bleibt, muss du bei der composition ein bißchen tricksen. Gehen würde z.B.:
(compose (curry + 3) *)
Dann hätte die addition allerdings einen festen parameter.
hab jetzt das probiert:
(define (compose f g)
(lambda (x)
(f (g x))))
(define (curry f x1)
(lambda (x2)
(f x1 x2)))
(define (juggle x) (compose (curry + 3) *))
bei der Anfrage (juggle 5) erhalte ich #<procedure:11:2>
Das muss du natürlich noch so korrigieren
(define (juggle x) ((compose (curry + 3) *)x))
dann müsste es auch laufen
oder:
(define juggle (compose (curry + 3) *))
Ich hab das jetzt so gelöst:
(define (juggle x y) ((compose (curry + 3) * ) x y))
Allerdings hab ich tools.scm benutzt, da dort curry und compose auch bei mehrstelligen Funktionen definiert sind
Wo kriegt man die tools nochmal her?