More tests. Not all of them pass yet, but we are hopeful.
original commit: 8e498458aa635b201db6c005241d436f644c940d
This commit is contained in:
parent
2a935208e9
commit
f8ed6299c4
|
@ -16,4 +16,50 @@
|
|||
(apply (case-lambda: (([x : Number] . [y : Number ... a]) x)
|
||||
(([x : String] [y : String] . [z : String]) 0)
|
||||
([y : Number] 0))
|
||||
w))
|
||||
w))
|
||||
|
||||
;; */*/poly
|
||||
(plambda: (a ...) ([z : String] . [w : Number])
|
||||
(apply (plambda: (b) ([x : b] . [y : Number]) x)
|
||||
1 w))
|
||||
|
||||
(plambda: (a ...) ([z : String] . [w : Number])
|
||||
(apply (plambda: (b) ([x : b] . [y : Number]) x)
|
||||
1 2 3 w))
|
||||
|
||||
;; */*/polydots
|
||||
(plambda: (a ...) ([z : String] . [w : Number])
|
||||
(apply (plambda: (b ...) ([x : Number] . [y : Number]) x)
|
||||
1 w))
|
||||
|
||||
(plambda: (a ...) ([z : String] . [w : Number])
|
||||
(apply (plambda: (b ...) ([x : Number] . [y : Number]) x)
|
||||
1 1 1 w))
|
||||
|
||||
;; */.../poly
|
||||
(plambda: (a ...) ([z : String] . [w : Number ... a])
|
||||
(apply (plambda: (b) ([x : Number] . [y : Number]) x)
|
||||
1 w))
|
||||
|
||||
(plambda: (a ...) ([z : String] . [w : Number ... a])
|
||||
(apply (plambda: (b) ([x : Number] . [y : Number]) x)
|
||||
1 1 1 1 w))
|
||||
|
||||
;; */.../polydots
|
||||
#;(plambda: (a ...) ([z : String] . [w : Number ... a])
|
||||
(apply (plambda: (b ...) ([x : Number] . [y : Number]) x)
|
||||
1 w))
|
||||
|
||||
#;(plambda: (a ...) ([z : String] . [w : Number ... a])
|
||||
(apply (plambda: (b ...) ([x : Number] . [y : Number]) x)
|
||||
1 1 1 1 w))
|
||||
|
||||
;; .../.../poly
|
||||
(plambda: (a ...) ([z : String] . [w : Number ... a])
|
||||
(apply (plambda: (b) ([x : Number] . [y : Number ... a]) x)
|
||||
1 w))
|
||||
|
||||
#;(plambda: (a ...) ([z : String] . [w : Number ... a])
|
||||
(apply (plambda: (b ...) ([x : Number] . [y : Number ... a]) x)
|
||||
1 w))
|
||||
|
||||
|
|
15
collects/tests/typed-scheme/succeed/cl-bug.ss
Normal file
15
collects/tests/typed-scheme/succeed/cl-bug.ss
Normal file
|
@ -0,0 +1,15 @@
|
|||
#lang typed-scheme
|
||||
|
||||
(: f (case-lambda (Integer * -> Integer) (Number * -> Number)))
|
||||
(define (f . x) (+ 1 2))
|
||||
|
||||
(: f4 (case-lambda (Integer * -> Integer) (Number * -> Number)))
|
||||
(define (f4 . x) (apply + x))
|
||||
|
||||
(: f3 (case-lambda (Integer * -> Integer) (Number * -> Number)))
|
||||
(define (f3 x y) (+ x y))
|
||||
|
||||
(+ 1 'foo)
|
||||
|
||||
(: f2 (case-lambda (Number * -> Number)))
|
||||
(define (f2 x y) (+ x y))
|
19
collects/tests/typed-scheme/succeed/fold-left.ss
Normal file
19
collects/tests/typed-scheme/succeed/fold-left.ss
Normal file
|
@ -0,0 +1,19 @@
|
|||
#lang typed-scheme
|
||||
|
||||
(: fold-left (All (c a b ...) ((c a b ... b -> c) c (Listof a) (Listof b) ... b -> c)))
|
||||
(define (fold-left f c as . bss)
|
||||
(if (or (null? a)
|
||||
(ormap null? bss))
|
||||
c
|
||||
(apply fold-left f
|
||||
(apply f c (car as) (map car bss))
|
||||
(cdr as) (map cdr bs))))
|
||||
|
||||
(: fold-right (All (c a b ...) ((c a b ... b -> c) c (Listof a) (Listof b) ... b -> c)))
|
||||
(define (fold-right f c as . bss)
|
||||
(if (or (null? a)
|
||||
(ormap null? bss))
|
||||
c
|
||||
(apply f
|
||||
(apply fold-left f c (cdr as) (map cdr bs))
|
||||
(car as) (map car bss))))
|
23
collects/tests/typed-scheme/succeed/lots-o-bugs.ss
Normal file
23
collects/tests/typed-scheme/succeed/lots-o-bugs.ss
Normal file
|
@ -0,0 +1,23 @@
|
|||
#lang typed-scheme
|
||||
|
||||
;; (All (a ...) ( -> (a ... a -> Integer)))
|
||||
#;
|
||||
(plambda: (a ...) ()
|
||||
(lambda: [ys : a ... a] 3))
|
||||
|
||||
(define x (plambda: (a ...) () (lambda: [ys : a ... a] 3)))
|
||||
|
||||
|
||||
#;#;
|
||||
(: y (All (a ...) ( -> (a ... a -> Integer))))
|
||||
(define y (plambda: (a ...) () (lambda: [ys : a ... a] 3)))
|
||||
#;#;
|
||||
(: z (All (a ...) ( -> (a ... a -> Integer))))
|
||||
(define z (lambda () (lambda ys 3)))
|
||||
|
||||
#;
|
||||
((plambda: (a ...) () (lambda: [ys : a ... a] 3)))
|
||||
|
||||
#;
|
||||
((plambda: (a ...) [xs : a ... a] (lambda: [ys : a ... a] 3))
|
||||
1 2 3)
|
30
collects/tests/typed-scheme/succeed/unholy-terror.ss
Normal file
30
collects/tests/typed-scheme/succeed/unholy-terror.ss
Normal file
|
@ -0,0 +1,30 @@
|
|||
#lang typed-scheme
|
||||
|
||||
(apply (plambda: (a ...) [ys : (a ... a -> Number) *]
|
||||
(lambda: [zs : a ... a]
|
||||
(map (lambda: ([y : (a ... a -> Number)])
|
||||
(apply y zs))
|
||||
ys)))
|
||||
(list (lambda: ([x : Number] [y : Number]) (+ x y))
|
||||
(lambda: ([x : Number] [y : Number]) (- x y))
|
||||
(lambda: ([x : Number] [y : Number]) (* x y))
|
||||
(lambda: ([x : Number] [y : Number]) (/ x y))))
|
||||
|
||||
((apply (plambda: (a ...) [ys : (a ... a -> Number) *]
|
||||
(lambda: [zs : a ... a]
|
||||
(map (lambda: ([y : (a ... a -> Number)])
|
||||
(apply y zs))
|
||||
ys)))
|
||||
(list (lambda: ([x : Number] [y : Number]) (+ x y))
|
||||
(lambda: ([x : Number] [y : Number]) (- x y))
|
||||
(lambda: ([x : Number] [y : Number]) (* x y))
|
||||
(lambda: ([x : Number] [y : Number]) (/ x y))))
|
||||
3 4)
|
||||
|
||||
|
||||
(apply (plambda: (a ...) [ys : (a ... a -> Number) *]
|
||||
(lambda: [zs : a ... a]
|
||||
(map (lambda: ([y : (a ... a -> Number)])
|
||||
(apply y zs))
|
||||
ys)))
|
||||
(list + - * /))
|
|
@ -551,6 +551,18 @@
|
|||
[tc-e (plambda: (b ...) [y : (Listof Integer) ... b] (apply append y))
|
||||
(-polydots (b) (->... (list) ((-lst -Integer) b) (-lst -Integer)))]
|
||||
|
||||
[tc-err (plambda: (a ...) ([z : String] . [w : Number ... a])
|
||||
(apply (plambda: (b) ([x : Number] . [y : Number ... a]) x)
|
||||
1 1 1 1 w))]
|
||||
|
||||
[tc-err (plambda: (a ...) ([z : String] . [w : Number])
|
||||
(apply (plambda: (b) ([x : Number] . [y : Number ... a]) x)
|
||||
1 w))]
|
||||
|
||||
[tc-err (plambda: (a ...) ([z : String] . [w : Number ... a])
|
||||
(apply (plambda: (b ...) ([x : Number] . [y : Number ... b]) x)
|
||||
1 w))]
|
||||
|
||||
;; error tests
|
||||
[tc-err (#%variable-reference number?)]
|
||||
[tc-err (+ 3 #f)]
|
||||
|
|
Loading…
Reference in New Issue
Block a user