diff --git a/collects/tests/typed-scheme/succeed/pr10470.rkt b/collects/tests/typed-scheme/succeed/pr10470.rkt new file mode 100644 index 00000000..bfc21cc2 --- /dev/null +++ b/collects/tests/typed-scheme/succeed/pr10470.rkt @@ -0,0 +1,15 @@ +(module pr10470 typed-scheme + + (define-type-alias (Memo alpha) (U (Option alpha) (-> (Option alpha)))) + + (define-struct: table ([val : (Memo Number)]) #:mutable) + + (: f (table -> (Option Number))) + (define (f tab) + (let ([proc-or-num (table-val tab)]) + (cond + [(procedure? proc-or-num) + (let ([result (proc-or-num)]) + (set-table-val! tab result) + result)] + [else proc-or-num])))) \ No newline at end of file