23 lines
882 B
Racket
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))))
|