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

29 lines
620 B
Racket

#lang typed/racket/base
;; Test for PR 13124
(: foo (-> Flonum))
(define (foo)
(: bn (Flonum -> Flonum))
(define (bn n)
(cond [(= n 0.0)
1.0]
[else (let loop ([s 0.0] [i 0.0])
(cond [(i . < . n)
(loop (+ s (bn i))
(+ i 1.0))]
[else s]))]))
;; we want this `v` to type-check without extra annotation
(define v 0.0)
v)
;; simpler version
(: foo2 (-> Integer))
(define (foo2)
(: bn (Integer -> Integer))
(define (bn n)
(if (= n 0)
1 (bn (- n 1))))
(define v 1)
0)