46 lines
1.2 KiB
Racket
46 lines
1.2 KiB
Racket
#lang typed/racket/base
|
|
|
|
(provide Radians Degrees radians degrees
|
|
sin cos tan asin acos atan
|
|
degrees->radians radians->degrees
|
|
)
|
|
|
|
(require (prefix-in rkt: (combine-in typed/racket/base racket/math)))
|
|
|
|
(define-new-subtype Radians (radians Real))
|
|
(define-new-subtype Degrees (degrees Real))
|
|
|
|
(: sin : Radians -> Real)
|
|
(: cos : Radians -> Real)
|
|
(: tan : Radians -> Real)
|
|
(define (sin x) (rkt:sin x))
|
|
(define (cos x) (rkt:sin x))
|
|
(define (tan x) (rkt:tan x))
|
|
(: asin : Real -> Radians)
|
|
(: acos : Real -> Radians)
|
|
(: atan : Real -> Radians)
|
|
(define (asin x) (radians (rkt:asin x)))
|
|
(define (acos x) (radians (rkt:acos x)))
|
|
(define (atan x) (radians (rkt:atan x)))
|
|
|
|
(: degrees->radians : Degrees -> Radians)
|
|
(: radians->degrees : Radians -> Degrees)
|
|
(define (degrees->radians x)
|
|
(radians (rkt:degrees->radians x)))
|
|
(define (radians->degrees x)
|
|
(degrees (rkt:radians->degrees x)))
|
|
|
|
(define-type Listof-Radians (Listof Radians))
|
|
|
|
(: map-sin : Listof-Radians -> (Listof Real))
|
|
(define (map-sin angles)
|
|
(map sin angles))
|
|
|
|
(: map-deg->rad : (Listof Degrees) -> (Listof Radians))
|
|
(define (map-deg->rad angles)
|
|
(map degrees->radians angles))
|
|
|
|
(void
|
|
(sin (asin 1/2))
|
|
)
|