Make (Set a) a subtype of (Sequenceof a).

Closes PR13485.
Closes PR12615.

original commit: 4f9f00680ee560ee59cddd5bdb3fb737c6bcc7f1
This commit is contained in:
Eric Dobson 2013-02-03 14:07:55 -08:00
parent 44d6d411cf
commit 19a05ebadc
4 changed files with 8 additions and 0 deletions

View File

@ -0,0 +1,3 @@
#lang typed/racket
(for ([i (set 1 2 3)])
(displayln i))

View File

@ -78,6 +78,7 @@
[(-val 6) -Number]
[(-val 'hello) -Symbol]
[(-set -Number) (make-Sequence (list -Number))]
[((Un -Symbol -Number) . -> . -Number) (-> -Number -Number)]
[(-poly (t) (-> -Number t)) (-mu t (-> -Number t))]
;; not subtypes

View File

@ -474,6 +474,8 @@
(cg t t*)]
[((Hashtable: k v) (Sequence: (list k* v*)))
(cgen/list V X Y (list k v) (list k* v*))]
[((Set: t) (Sequence: (list t*)))
(cg t t*)]
;; ListDots can be below a Listof
;; must be above mu unfolding
[((ListDots: s-dty dbound) (Listof: t-elem))

View File

@ -299,6 +299,8 @@
(subtype* A0 -Nat t*)]
[((Hashtable: k v) (Sequence: (list k* v*)))
(subtypes* A0 (list k v) (list k* v*))]
[((Set: t) (Sequence: (list t*)))
(subtype* A0 t t*)]
;; special-case for case-lambda/union with only one argument
[((Function: arr1) (Function: (list arr2)))
(when (null? arr1) (fail! s t))