From ec0c8516c25526676cb87263cc90075fee859370 Mon Sep 17 00:00:00 2001 From: Brian Lachance Date: Wed, 15 Jun 2016 09:58:36 -0400 Subject: [PATCH] Add types for combinations, in-combinations --- typed-racket-lib/typed-racket/base-env/base-env.rkt | 6 ++++++ typed-racket-test/unit-tests/typecheck-tests.rkt | 4 ++++ 2 files changed, 10 insertions(+) diff --git a/typed-racket-lib/typed-racket/base-env/base-env.rkt b/typed-racket-lib/typed-racket/base-env/base-env.rkt index 90bbaa49..afc413a4 100644 --- a/typed-racket-lib/typed-racket/base-env/base-env.rkt +++ b/typed-racket-lib/typed-racket/base-env/base-env.rkt @@ -778,6 +778,12 @@ (-poly (a) ((-lst (-lst a)) . -> . (-lst a)))] [flatten (Univ . -> . (-lst Univ))] +[combinations (-poly (a) (cl->* + (-> (-lst a) (-lst (-lst a))) + (-> (-lst a) -Nat (-lst (-lst a)))))] +[in-combinations (-poly (a) (cl->* + (-> (-lst a) (-seq (-lst a))) + (-> (-lst a) -Nat (-seq (-lst a)))))] [permutations (-poly (a) (-> (-lst a) (-lst (-lst a))))] [in-permutations (-poly (a) (-> (-lst a) (-seq (-lst a))))] [argmin (-poly (a) ((a . -> . -Real) (-lst a) . -> . a))] diff --git a/typed-racket-test/unit-tests/typecheck-tests.rkt b/typed-racket-test/unit-tests/typecheck-tests.rkt index 299be712..328f2905 100644 --- a/typed-racket-test/unit-tests/typecheck-tests.rkt +++ b/typed-racket-test/unit-tests/typecheck-tests.rkt @@ -2403,6 +2403,10 @@ [tc-e (splitf-at-right '("a" b "x" "y") string?) #:ret (ret (list (-lst (t:Un -String (-val 'b))) (-lst -String)))] + [tc-e (combinations '(1 2 1)) (-lst (-lst -PosByte))] + [tc-e (combinations '(1 2 1) 2) (-lst (-lst -PosByte))] + [tc-e (in-combinations '(1 2 1)) (-seq (-lst -PosByte))] + [tc-e (in-combinations '(1 2 1) 2) (-seq (-lst -PosByte))] [tc-e (permutations '(a b c d)) (-lst (-lst (one-of/c 'a 'b 'c 'd)))] [tc-e (in-permutations '(a b c d)) (-seq (-lst (one-of/c 'a 'b 'c 'd)))]