-
Notifications
You must be signed in to change notification settings - Fork 2
/
bencht.rkt
28 lines (23 loc) · 793 Bytes
/
bencht.rkt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#lang typed/racket
(struct rectangle [[lx : Float] [by : Float] [rx : Float] [ty : Float]]
#:transparent)
(define (as-list [r : rectangle])
(list (lx r) (by r) (rx r) (ty r)))
(define r rectangle)
(: lx (-> rectangle Float))
(define lx rectangle-lx)
(: by (-> rectangle Float))
(define by rectangle-by)
(: rx (-> rectangle Float))
(define rx rectangle-rx)
(: ty (-> rectangle Float))
(define ty rectangle-ty)
(define (union [r1 : rectangle] [r2 : rectangle])
(rectangle (min (lx r1) (lx r2))
(min (by r1) (by r2))
(max (rx r1) (rx r2))
(max (ty r1) (ty r2))))
(time
(println (for/fold ([area (r 25.0 25.0 200.0 200.0)])
([i (in-range 1000000000)])
(values (union area (r 20.0 0.0 100.0 (exact->inexact i)))))))