typed-racket/typed-racket-test/succeed/discrete-dist.rkt
2014-12-16 10:07:25 -05:00

23 lines
882 B
Racket

#lang typed/racket
;; A test case boiled down from code in the math collection
(require racket/promise)
(: sequence->normalized-weighted-samples
(All (A) (Symbol (Sequenceof A) -> (Values (Listof A) (Listof Positive-Flonum)))))
(define (sequence->normalized-weighted-samples name xs)
;; the implementation of this is not important for this test
(values (sequence->list xs) '(1.0)))
(: discrete-dist
;; the case-> type here causes the problem
(All (A) (case-> ((Sequenceof A) -> (Sequenceof A))
((Sequenceof A) (Option (Sequenceof Real)) -> (Sequenceof A)))))
(define (discrete-dist xs [ws #f])
(let-values ([(xs _) (sequence->normalized-weighted-samples 'discrete-dist xs)])
;; the bug this test is supposed to catch causes the
;; following annotation to fail due to two type variables
;; not being equal
(ann xs (Listof A))))