Advertisement
Guest User

Untitled

a guest
Nov 8th, 2018
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Racket 2.45 KB | None | 0 0
  1. #lang racket
  2.  
  3. (define xs1 (list 1 2 3))
  4. (define xs2 (list 5 6 7))
  5.  
  6. (lambda (x y) (+ x y))
  7.  
  8. (define plus
  9.   (lambda (x y) (+ x y))
  10.  )
  11.  
  12.  
  13.  
  14. (map (lambda (x) (* x x)) xs1)
  15. (map + xs1 xs2)
  16. (map cons xs1 xs2)
  17.  
  18. (filter even? xs1)
  19.  
  20.  
  21. (define getOp
  22.   (lambda (x)
  23.     (if x
  24.         (lambda (x) (* x x))
  25.         (lambda (x) x)
  26.      )
  27.    )
  28.  )
  29.  
  30. ((getOp #f) 5)
  31.  
  32.  
  33. (apply * (range 1 5))
  34. (apply max (range 1 5))
  35.  
  36. ; Зад. 1 Дефинирайте следните функции:
  37. ; a). (my-identity x), функцията идентитет: връща каквото и дадете.
  38. ; б). (my-compose f g), която връща композицията на функциите f и g.
  39. ; в). (my-negate p?), която приема предикат p? и връща предиката (not p?).
  40. ; г). (my-curry f x), която приема двуаргумента функция f и първи аргумент x
  41. ;      и връща функцията получена от частичното прилагане на x върху f.
  42. ; д). (repeatf f n), която връща n-кратната композиция на функцията f.
  43.  
  44. (define my-identity
  45.   (lambda (x) x)
  46.  )
  47.  
  48. (define plus1
  49.   (curry + 1)
  50.  )
  51.  
  52.  
  53. (define my-compose
  54.   (lambda (f g)
  55.     (lambda (x)
  56.       (f (g x))
  57.      )
  58.    )
  59.  )
  60. (define (my-compose2 f g)
  61.   (lambda (x)
  62.     (f (g x))
  63.    )
  64.  )
  65. (define sq-2
  66.   (my-compose
  67.    (lambda (x) (* x x))
  68.    (lambda (x) (* x x))
  69.   )
  70.  )
  71.  
  72. (define my-negate
  73.   (lambda (p?)
  74.     (lambda (x)
  75.       (not (p? x))
  76.      )
  77.    )
  78.  )
  79. (define my-negate2
  80.   (lambda (p?)
  81.     (my-compose not p?)
  82.    )
  83.  )
  84. ((my-negate even?) 5)
  85. ((my-negate2 even?) 5)
  86.  
  87. (define my-curry
  88.   (lambda (f x)
  89.     (lambda (y)
  90.       (f x y)
  91.      )
  92.    )
  93.  )
  94. ((my-curry * 5) 6)
  95.  
  96. (define repeatf
  97.   (lambda (f n)
  98.    (if (= n 0)
  99.     identity
  100.     (compose f (repeatf f (- n 1)))
  101.     )
  102.    )
  103.  )
  104.  
  105. ((repeatf (lambda (x) (* x x)) 3) 2)
  106.  
  107. ; Зад. 2 Да се дефинира функцията (sum-of-odd-squares xs),
  108. ; която връща сбора на квадратите на нечетните числа
  109. ; в списъка xs.
  110. ; (sum-of-odd-squares (list 3 5 8)) == 34
  111. ; (sum-of-odd-squares (list 2 4 6)) == 0
  112.  
  113. (define (sum-of-odd-squares xs)
  114.   (let* (
  115.     (odd (filter odd? xs))
  116.     (squares (map (lambda (x) (* x x)) odd))
  117.     )
  118.     (apply + squares)
  119.    )
  120.  )
  121. (sum-of-odd-squares (list 3 5 8))
  122. (sum-of-odd-squares (list 2 4 6))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement