diff --git a/pkgs/typed-racket-pkgs/typed-racket-lib/typed-racket/base-env/base-env.rkt b/pkgs/typed-racket-pkgs/typed-racket-lib/typed-racket/base-env/base-env.rkt index d61e2cc5..047dba48 100644 --- a/pkgs/typed-racket-pkgs/typed-racket-lib/typed-racket/base-env/base-env.rkt +++ b/pkgs/typed-racket-pkgs/typed-racket-lib/typed-racket/base-env/base-env.rkt @@ -657,11 +657,11 @@ (-poly (a b c d) (cl-> [((a b . -> . b) b (-lst a)) b] [((a b c . -> . c) c (-lst a) (-lst b)) c] - [((a b c d . -> . d) d (-lst a) (-lst b) (-lst d)) d]))] + [((a b c d . -> . d) d (-lst a) (-lst b) (-lst c)) d]))] [foldr (-poly (a b c d) (cl-> [((a b . -> . b) b (-lst a)) b] [((a b c . -> . c) c (-lst a) (-lst b)) c] - [((a b c d . -> . d) d (-lst a) (-lst b) (-lst d)) d]))] + [((a b c d . -> . d) d (-lst a) (-lst b) (-lst c)) d]))] [filter (-poly (a b) (cl->* ((asym-pred a Univ (-FS (-filter b 0) -top)) (-lst a) diff --git a/pkgs/typed-racket-pkgs/typed-racket-test/tests/typed-racket/unit-tests/typecheck-tests.rkt b/pkgs/typed-racket-pkgs/typed-racket-test/tests/typed-racket/unit-tests/typecheck-tests.rkt index d14b8b69..58b0cd88 100644 --- a/pkgs/typed-racket-pkgs/typed-racket-test/tests/typed-racket/unit-tests/typecheck-tests.rkt +++ b/pkgs/typed-racket-pkgs/typed-racket-test/tests/typed-racket/unit-tests/typecheck-tests.rkt @@ -1155,6 +1155,19 @@ (-polydots (a) ((list) (a a) . ->... . -Integer))] |# + [tc-e (foldl (lambda: ([x : Integer] [acc : String]) acc) "" '(1 2 3)) + -String] + [tc-e (foldl (lambda: ([x : Integer] [y : Float] [acc : String]) acc) "" '(1 2 3) '(1.2 3.4 5.6)) + -String] + [tc-e (foldl (lambda: ([x : Integer] [y : Float] [z : Symbol ] [acc : String]) acc) "" '(1 2 3) '(1.2 3.4 5.6) '(a b c)) + -String] + [tc-e (foldr (lambda: ([x : Integer] [acc : String]) acc) "" '(1 2 3)) + -String] + [tc-e (foldr (lambda: ([x : Integer] [y : Float] [acc : String]) acc) "" '(1 2 3) '(1.2 3.4 5.6)) + -String] + [tc-e (foldr (lambda: ([x : Integer] [y : Float] [z : Symbol ] [acc : String]) acc) "" '(1 2 3) '(1.2 3.4 5.6) '(a b c)) + -String] + ;; First is same as second, but with map explicitly instantiated. [tc-e/t (plambda: (a ...) [ys : (a ... a -> Number) *] (lambda: [zs : a ... a]