
Type Sequences Example: destructuring-case
Regular type expression denoting Case-2
( : c a t
( : ca t f i x n u m ( : and l i s t ( r t e ( : ca t f i x n u m fixnu m ) ) ) )
( : and (: ∗ key wor d t )
( : ca t
( : ∗ ( no t ( member : x : y : z ) ) t )
( : or : empty−word
( : ca t ( e q l : z ) fixn u m ( : ∗ ( not ( member : x : y ) ) t )
( : ? ( e q l : y ) s t r i n g ( : ∗ ( no t ( e q l : x ) ) t )
( : ? ( e q l : x ) sy m bol ( : ∗ t t ) ) ) )
( : c a t ( e q l : z ) fixnu m ( : ∗ ( not ( member : x : y ) ) t )
( : ? ( e q l : x ) sym b ol ( : ∗ ( no t ( e q l : y ) ) t )
( : ? ( e q l : y ) s t r i n g ( : ∗ t t ) ) ) )
( : c a t ( e q l : y ) s t r i n g ( : ∗ ( not ( member : x : z ) ) t )
( : ? ( e q l : z ) f i x num ( : ∗ ( no t ( e q l : x ) ) t )
( : ? ( e q l : x ) sy m bol ( : ∗ t t ) ) ) )
( : c a t ( e q l : x ) s y mbo l ( : ∗ ( not ( member : y : z ) ) t )
( : ? ( e q l : z ) f i x num ( : ∗ ( no t ( e q l : y ) ) t )
( : ? ( e q l : y ) s t r i n g ( : ∗ t t ) ) ) )
( : c a t ( e q l : y ) s t r i n g ( : ∗ ( not ( member : x : z ) ) t )
( : ? ( e q l : x ) sym b ol ( : ∗ ( no t ( e q l : z ) ) t )
( : ? ( e q l : z ) fixnum ( : ∗ t t ) ) ) )
( : c a t ( e q l : x ) s y mbo l ( : ∗ ( not ( member : y : z ) ) t )
( : ? ( e q l : y ) s t r i n g ( : ∗ ( no t ( e q l : z ) ) t )
( : ? ( e q l : z ) fixnum ( : ∗ t t ) ) ) ) ) ) ) )
Jim Newton (EPITA/LRDE) Type-checking on Heterogeneous Sequences May 9, 2016 18 / 31