Advertisement
DoromaAnim

xdddd

Jun 5th, 2019
137
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.44 KB | None | 0 0
  1. #lang typed/racket
  2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  3. (struct vector2 ([x : Real] [y : Real]) #:transparent)
  4. (struct vector3 ([x : Real] [y : Real] [z : Real]) #:transparent)
  5.  
  6. (: vector-length (-> (U vector2 vector3) Real))
  7. (define (vector-length vec)
  8. (cond [(vector2? vec)
  9. (sqrt (+ (sqr (vector2-x vec))
  10. (sqr (vector2-y vec))))]
  11. [(vector3? vec)
  12. (sqrt (+ (sqr (vector3-x vec))
  13. (sqr (vector3-y vec))
  14. (sqr (vector3-z vec))))]))
  15.  
  16. (: vector-length2 (-> (U vector2 vector3) Real))
  17. (define (vector-length2 vec)
  18. (match vec
  19. [(vector2 x y)
  20. (sqrt (+ (sqr x)
  21. (sqr y)))]
  22. [(vector3 x y z)
  23. (sqrt (+ (sqr x)
  24. (sqr y)
  25. (sqr z)))]))
  26. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  27.  
  28. (: prefixes (All (A) (-> (Listof A ) (Listof (Listof A)))))
  29. (define (prefixes xs)
  30. (if (null? xs)
  31. null
  32. (append (list (list (car xs)))
  33. (map (lambda ([x : (Listof A)]) (cons (car xs) x))
  34. (prefixes (cdr xs))))))
  35. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~4~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  36.  
  37. (define-type Leaf 'leaf)
  38. (define-type (Node a b) (List 'node a (Listof b)))
  39. (define-type (Tree a) (U Leaf (Node a (Tree a))))
  40.  
  41. (define-predicate leaf? Leaf)
  42. (define-predicate node? (Node Any Any))
  43. (define-predicate tree? (Tree Any))
  44.  
  45. (: node-val (All (a b) (-> (Node a b) a)))
  46. (define (node-val x)
  47. (second x))
  48.  
  49. (: node-list (All (a b) (-> (Node a b) (Listof b))))
  50. (define (node-list x)
  51. (third x))
  52.  
  53. (: leaf Leaf)
  54. (define leaf 'leaf)
  55.  
  56. (: rose-pre-order (-> (Tree Integer) (Listof Integer)))
  57. (define (rose-pre-order t)
  58. (cond [(leaf? t) null]
  59. [else (cons (node-val t) (append-map (lambda (x) (rose-pre-order x)) (node-list t)))]))
  60.  
  61. (tree? (list 'node 1 (list (list 'node 3
  62. (list leaf
  63. leaf
  64. (list 'node 2 (list leaf))))
  65. (list 'node 4 (list leaf)))))
  66.  
  67. (rose-pre-order (list 'node 1 (list (list 'node 3
  68. (list (list 'node 2 (list leaf))))
  69. (list 'node 4 (list leaf)))))
  70.  
  71. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~4~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  72.  
  73. (: map (All (a b) (-> (-> a b) (Listof a) (Listof b))))
  74. (define (map f xs)
  75. (if (null? xs)
  76. null
  77. (cons (car xs) (cons (f (car xs))
  78. (map f (cdr xs))))))
  79.  
  80. (: map2 (All (a) (-> (-> a a) (Listof a) (Listof a))))
  81. (define (map2 f xs)
  82. (if (null? xs)
  83. null
  84. (cons (car xs) (cons (f (car xs))
  85. (map2 f (cdr xs))))))
  86.  
  87. (map (lambda (x) x) '(1 2 3))
  88. ;;zmieniony typ ograncza np (map2 char->integer '(#\a #\b #\c))
  89. --------------------------------------
  90. (define/contract (map f xs)
  91. (parametric->/c [a b] (-> (-> a b) (listof a) (listof b)))
  92. (if (null? xs)
  93. null
  94. (cons (car xs) (cons (f (car xs))
  95. (map f (cdr xs))))))
  96.  
  97. (define/contract (map2 f xs)
  98. (parametric->/c [a] (-> (-> a a) (listof a) (listof a)))
  99. (if (null? xs)
  100. null
  101. (cons (car xs) (cons (f (car xs))
  102. (map2 f (cdr xs))))))
  103.  
  104. (define x (lambda (x) (* 2 x)))
  105.  
  106. ;(map x '(1 2 3))
  107. (map2 x '(1 2 3))
  108. ;;tu nie bo chyba poprostu a opakuje to wszystko
  109. (map2 char->integer '(#\a #\b #\c))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement