Check number of type errors.

original commit: 97c5444b88b79c70c1e7625361e6c6ea48284621
This commit is contained in:
Sam Tobin-Hochstadt 2008-06-24 14:05:24 -04:00
parent d229e895b4
commit 02f34aa0fd
4 changed files with 26 additions and 5 deletions

View File

@ -0,0 +1,17 @@
#;
(exn-pred 3)
#lang typed-scheme
(: map-with-funcs (All (b a ...) ((a ... a -> b) * -> (a ... a -> (Listof b)))))
(define (map-with-funcs . fs)
(lambda as
(map (lambda: ([f : (a ... a -> b)])
(apply f as))
fs)))
(ann (map-with-funcs + - * /) (Number Number * -> (Listof Integer)))
(ann (map-with-funcs + - * /) (Number * -> (Listof Number)))
(ann (map-with-funcs + - * /) (Integer * -> (Listof Number)))

View File

@ -1,3 +1,5 @@
#;
(exn-pred 2)
#lang typed-scheme
(plambda: (a ...) ([z : String] . [w : Number *])

View File

@ -20,10 +20,12 @@
(lambda (val)
(and (exn? val)
(for/and ([e args])
(if (procedure? e)
(e val)
(begin
(regexp-match e (exn-message val)))))))
(cond [(procedure? e) (e val)]
[(number? e)
(and (exn:fail:syntax? val)
(= e (length (exn:fail:syntax-exprs val))))]
[(or (string? e) (regexp? e) (bytes? e))
(regexp-match e (exn-message val))]))))
args))
(define (exn-pred p)

View File

@ -8,4 +8,4 @@
(apply f as))
fs)))
(ann (map-with-funcs + - * /) (Integer Integer * -> (Listof Number)))
(ann (map-with-funcs + - * /) (Number Number * -> (Listof Number)))