[racket] problem (?) with typed racket
On Mon, Jul 5, 2010 at 10:09 AM, Jose A. Ortega Ruiz <jao at gnu.org> wrote:
>
> but, if we want to define a non-procedural value in an analogous fashion:
>
> (: carrow (All (E) (C (Arrow E))))
> (define carrow
> (C #{compose-arrows :: ((Arrow E) (Arrow E) -> (Arrow E))}))
>
> the type checker complains that E is an unbound type name, for all
> occurrences of E inside the define form.
Right now, type variables bound by `All' in the type declaration are
only in scope for procedure bodies, not the general RHS of defintions.
This is just because of the how the implementation works, so there's
not a particularly good reason for it, and I plan to make this work
eventually.
--
sam th
samth at ccs.neu.edu