Advertisement
Guest User

Funktionen höherer Ordnung (Racket / Scheme)

a guest
Apr 4th, 2013
194
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ;; @author Simon Hoyer
  2. ;; Exkurs: Funktionen höherer Ordnung - Racket / Scheme
  3.  
  4. ;; Vertrag: filter: (X -> boolean) listofX -> listofX
  5. ;; Beschreibung: filter filtert alle Elemente aus einer Liste für die, die boolean Funktion true ergibt.
  6. (check-expect (filter (lambda (x)(> x 5))(list 1 2 3 4 5 6 7 8)) '(6 7 8))
  7.  
  8. ;; Vertrag: map: (X -> X) listofX -> listofX
  9. ;; Beschreibung: map wendet Funktion auf jedes Element der Liste an
  10. (check-expect (map (lambda (x)(+ x 2))(list 2 3 8 7)) '(4 5 10 9))
  11.  
  12. ;; Vertrag: foldr bzw. foldl: (X Y -> Z) X listofX -> X
  13. ;; Beschreibung: fold geht die Liste durch wobei hier in dem Beispiel der erste x auf das erste Element
  14. ;;               der Liste zurückgreift und y auf das nächste. (usw)
  15. ;;               Der mittlere formale Parameter ist hierbei die base. Diese base ist der Startwert.
  16. ;; Beispiel für die Auswertung von foldr (von links nach rechts)
  17. ;; (foldr (lambda (x y)(+ x y)) 4 '(2 3 4 5))
  18. ;; ((((4+2)+3)+4)+5)
  19. ;; Beispiel für die Auswertung von foldl (von rechts nach links)
  20. ;; (foldr (lambda (x y)(+ x y)) 4 '(2 3 4 5))
  21. ;; ((((4+5)+4)+3)+2)
  22. (check-expect (foldr (lambda (x y)(+ x y)) 0 '(2 3 4 5)) 14)
  23. (check-expect (foldr (lambda (x y)(+ x y)) 9 '(2 3 4 5)) (+ 14 9))
  24. (check-expect (foldl (lambda (x y)(+ x y)) 0 '(2 3 4 5)) 14)
  25. (check-expect (foldl (lambda (x y)(+ x y)) 3 '(2 3 4 5)) (+ 14 3))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement