Add the forall Unicode symbol as an acceptable replacement for the

All type constructor.

svn: r10797
This commit is contained in:
Stevie Strickland 2008-07-16 17:37:05 +00:00
parent 9ca0dc49c3
commit 91291ba2bc
2 changed files with 7 additions and 2 deletions

View File

@ -75,6 +75,9 @@
[(U Number Boolean Number) (Un N B)]
[(U Number Boolean 1) (Un N B)]
[(All (a) (Listof a)) (-poly (a) (make-Listof a))]
[(All (a ...) (a ... a -> Integer)) (-polydots (a) ( (list) (a a) . ->... . -Integer))]
[( (a) (Listof a)) (-poly (a) (make-Listof a))]
[( (a ...) (a ... a -> Integer)) (-polydots (a) ( (list) (a a) . ->... . -Integer))]
[(case-lambda (Number -> Boolean) (Number Number -> Number)) (cl-> [(N) B]
[(N N) N])]
[1 (-val 1)]

View File

@ -154,7 +154,8 @@
(eq? (syntax-e #'quot) 'quote)
(-val (syntax-e #'t))]
[(All (vars ... v dd) t)
(and (eq? (syntax-e #'All) 'All)
(and (or (eq? (syntax-e #'All) 'All)
(eq? (syntax-e #'All) '))
(eq? (syntax-e #'dd) '...)
(andmap identifier? (syntax->list #'(v vars ...))))
(let* ([vars (map syntax-e (syntax->list #'(vars ...)))]
@ -165,7 +166,8 @@
(parameterize ([current-tvars (extend-env (cons v vars) (cons tv tvars) (current-tvars))])
(make-PolyDots (append vars (list v)) (parse-type #'t))))]
[(All (vars ...) t)
(and (eq? (syntax-e #'All) 'All)
(and (or (eq? (syntax-e #'All) 'All)
(eq? (syntax-e #'All) '))
(andmap identifier? (syntax->list #'(vars ...))))
(let* ([vars (map syntax-e (syntax->list #'(vars ...)))]
[tvars (map make-F vars)])