Type-checking on Heterogeneous Sequences
in Common Lisp Jim Newton
EPITA/LRDE
May 9, 2016
Jim Newton (EPITA/LRDE) Type-checking on Heterogeneous Sequences May 9, 2016 1 / 31
Type-checking on Heterogeneous Sequences in Common Lisp Jim Newton - - PowerPoint PPT Presentation
Type-checking on Heterogeneous Sequences in Common Lisp Jim Newton EPITA/LRDE May 9, 2016 Jim Newton (EPITA/LRDE) Type-checking on Heterogeneous Sequences May 9, 2016 1 / 31 Overview Introduction 1 Common Lisp Types Type Sequences 2
Jim Newton (EPITA/LRDE) Type-checking on Heterogeneous Sequences May 9, 2016 1 / 31
Jim Newton (EPITA/LRDE) Type-checking on Heterogeneous Sequences May 9, 2016 2 / 31
Introduction Common Lisp Types
Jim Newton (EPITA/LRDE) Type-checking on Heterogeneous Sequences May 9, 2016 3 / 31
Introduction Common Lisp Types
Jim Newton (EPITA/LRDE) Type-checking on Heterogeneous Sequences May 9, 2016 4 / 31
Introduction Common Lisp Types
Jim Newton (EPITA/LRDE) Type-checking on Heterogeneous Sequences May 9, 2016 5 / 31
Introduction Common Lisp Types
Jim Newton (EPITA/LRDE) Type-checking on Heterogeneous Sequences May 9, 2016 5 / 31
Introduction Common Lisp Types
Jim Newton (EPITA/LRDE) Type-checking on Heterogeneous Sequences May 9, 2016 6 / 31
Type Sequences Limitations
Jim Newton (EPITA/LRDE) Type-checking on Heterogeneous Sequences May 9, 2016 7 / 31
Type Sequences Limitations
Jim Newton (EPITA/LRDE) Type-checking on Heterogeneous Sequences May 9, 2016 8 / 31
Type Sequences Limitations
Jim Newton (EPITA/LRDE) Type-checking on Heterogeneous Sequences May 9, 2016 8 / 31
Type Sequences Rational Type Expression
Jim Newton (EPITA/LRDE) Type-checking on Heterogeneous Sequences May 9, 2016 9 / 31
Type Sequences Rational Type Expression
Jim Newton (EPITA/LRDE) Type-checking on Heterogeneous Sequences May 9, 2016 10 / 31
Type Sequences Rational Type Expression
Jim Newton (EPITA/LRDE) Type-checking on Heterogeneous Sequences May 9, 2016 10 / 31
Type Sequences Rational Type Expression
Jim Newton (EPITA/LRDE) Type-checking on Heterogeneous Sequences May 9, 2016 11 / 31
Type Sequences Rational Type Expression
Jim Newton (EPITA/LRDE) Type-checking on Heterogeneous Sequences May 9, 2016 12 / 31
Type Sequences Generated Code
Jim Newton (EPITA/LRDE) Type-checking on Heterogeneous Sequences May 9, 2016 13 / 31
Type Sequences Generated Code
Jim Newton (EPITA/LRDE) Type-checking on Heterogeneous Sequences May 9, 2016 14 / 31
Type Sequences Generated Code
Jim Newton (EPITA/LRDE) Type-checking on Heterogeneous Sequences May 9, 2016 15 / 31
Type Sequences Example: destructuring-case
Jim Newton (EPITA/LRDE) Type-checking on Heterogeneous Sequences May 9, 2016 16 / 31
Type Sequences Example: destructuring-case
Jim Newton (EPITA/LRDE) Type-checking on Heterogeneous Sequences May 9, 2016 17 / 31
Type Sequences Example: destructuring-case
( : cat ( : cat fixnum ( : and l i s t ( r t e ( : cat fixnum fixnum ) ) ) ) ( : and (:∗ keyword t ) ( : cat (:∗ ( not ( member : x : y : z ) ) t ) ( : or : empty−word ( : cat ( e q l : z ) fixnum (:∗ ( not ( member : x : y )) t ) ( : ? ( e q l : y ) s t r i n g (:∗ ( not ( e q l : x )) t ) ( : ? ( e q l : x ) symbol (:∗ t t ) ) ) ) ( : cat ( e q l : z ) fixnum (:∗ ( not ( member : x : y )) t ) ( : ? ( e q l : x ) symbol (:∗ ( not ( e q l : y )) t ) ( : ? ( e q l : y ) s t r i n g (:∗ t t ) ) ) ) ( : cat ( e q l : y ) s t r i n g (:∗ ( not ( member : x : z ) ) t ) ( : ? ( e q l : z ) fixnum (:∗ ( not ( e q l : x )) t ) ( : ? ( e q l : x ) symbol (:∗ t t ) ) ) ) ( : cat ( e q l : x ) symbol (:∗ ( not ( member : y : z ) ) t ) ( : ? ( e q l : z ) fixnum (:∗ ( not ( e q l : y )) t ) ( : ? ( e q l : y ) s t r i n g (:∗ t t ) ) ) ) ( : cat ( e q l : y ) s t r i n g (:∗ ( not ( member : x : z )) t ) ( : ? ( e q l : x ) symbol (:∗ ( not ( e q l : z ) ) t ) ( : ? ( e q l : z ) fixnum (:∗ t t ) ) ) ) ( : cat ( e q l : x ) symbol (:∗ ( not ( member : y : z )) t ) ( : ? ( e q l : y ) s t r i n g (:∗ ( not ( 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
Type Sequences Example: destructuring-case
1 T3 2 T7 16 T21 17 T8 3 T9 25 T10 T1 18 T4 4 T6 26 T3 5 T19 6 T8 12 T10 T1 7 T4 13 T3 8 T17 9 T10 T1 10 T3 11 T5 T1 14 T15 15 T8 T1 T4 19 T20 20 T9 21 T10 T1 T6 22 T3 23 T16 24 T9 T1 T6 27 T18 28 T8 29 T9 T1 T4 T6
Jim Newton (EPITA/LRDE) Type-checking on Heterogeneous Sequences May 9, 2016 19 / 31
Type Sequences Overlapping Types
Jim Newton (EPITA/LRDE) Type-checking on Heterogeneous Sequences May 9, 2016 20 / 31
Type Sequences Overlapping Types
Jim Newton (EPITA/LRDE) Type-checking on Heterogeneous Sequences May 9, 2016 21 / 31
Type Sequences Overlapping Types
Jim Newton (EPITA/LRDE) Type-checking on Heterogeneous Sequences May 9, 2016 22 / 31
Type Sequences Overlapping Types
Jim Newton (EPITA/LRDE) Type-checking on Heterogeneous Sequences May 9, 2016 23 / 31
Type Sequences Overlapping Types
Jim Newton (EPITA/LRDE) Type-checking on Heterogeneous Sequences May 9, 2016 24 / 31
Conclusion Difficulties Encountered
Jim Newton (EPITA/LRDE) Type-checking on Heterogeneous Sequences May 9, 2016 25 / 31
Conclusion Difficulties Encountered
Jim Newton (EPITA/LRDE) Type-checking on Heterogeneous Sequences May 9, 2016 26 / 31
Conclusion Difficulties Encountered
Jim Newton (EPITA/LRDE) Type-checking on Heterogeneous Sequences May 9, 2016 27 / 31
Conclusion Difficulties Encountered
Jim Newton (EPITA/LRDE) Type-checking on Heterogeneous Sequences May 9, 2016 28 / 31
Conclusion Difficulties Encountered
Jim Newton (EPITA/LRDE) Type-checking on Heterogeneous Sequences May 9, 2016 29 / 31
Conclusion Summary
Jim Newton (EPITA/LRDE) Type-checking on Heterogeneous Sequences May 9, 2016 30 / 31
Conclusion Questions
Jim Newton (EPITA/LRDE) Type-checking on Heterogeneous Sequences May 9, 2016 31 / 31