[plt-dev] Call for Participation: Writing Typed Scheme wrapper modules
Sorry, on plt-dev now. Below is my first trial of math-wrapper with some tests. Would this come close to what you expect? Comments are appreciated.
In the source text of scheme/math sinh and cosh are commented as real sinh and real cosh, but as far as I can judge they work for complex numbers too. The documentation of sinh and cosh does not delimit the argument to be real. The wrapper allows complex arguments.
If you are satisfied, I am in for another simple assignment.
Jos
PS Matthias, thanks for your answer to my question.
; Typed Scheme wrapper for scheme/math
#lang typed-scheme
(define-type-alias N->N (Number -> Number))
(require/typed scheme/math
(pi Number)
(sqr N->N)
(sgn N->N)
(conjugate N->N)
(sinh N->N)
(cosh N->N))
(define: (rsgn (r : Number)) : Number
(unless (real? r) (raise-type-error 'sgn "real" r))
(sgn r))
(provide
pi
sqr
(rename-out (rsgn sgn))
conjugate
sinh
cosh)
#|
Should math not provide tanh?
(define: (tanh (z : Number)) : Number (* -i (tan (* +i z))))
(provide tanh)
|#
; Some simple tests on math-wrapper
#lang typed-scheme
(require "math-wrapper.ss")
(unless
(and
(= (sqr +i) -1)
(= (sqr -1) 1)
(= (sgn 0) 0)
(= (sgn -0.1) -1)
(< (magnitude (- (sinh -i) (* -i (sin 1)))) 1.e-10)
(< (magnitude (- (cosh -i) (cos 1))) 1.e-10)
(= (conjugate -i) +i)
(= pi 3.141592653589793)
(eq?
(call/cc
(lambda: ((cc : (Any -> Any)))
(define: (exit (x : Any)) : Any (cc 'ok))
(with-handlers ((void exit)) (sgn +i))))
'ok))
(error 'math-wrapper-test "check fails"))
----- Original Message -----
From: "Sam TH" <samth at ccs.neu.edu>
To: "Jos Koot" <jos.koot at telefonica.net>
Sent: Wednesday, February 25, 2009 2:23 PM
Subject: Re: [plt-dev] Re: [plt-scheme] Call for Participation: Writing Typed Scheme wrapper modules
Jos -
Are you on the plt-dev list? If so, I'd prefer to do discussion there.
Thanks,
sam th
On Wed, Feb 25, 2009 at 8:06 AM, Jos Koot <jos.koot at telefonica.net> wrote:
> In the typed-scheme reference I see base types Number and Integer. I want a
> type for reals, because many numerical functions accept/return reals but not
> complex numbers. Is this possible? How?
> Jos
> _________________________________________________
> For list-related administrative tasks:
> http://list.cs.brown.edu/mailman/listinfo/plt-scheme
>
>
--
sam th
samth at ccs.neu.edu
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.racket-lang.org/dev/archive/attachments/20090225/a684286a/attachment.html>