Atypesystemisasyntacticmethodforenforcinglevelsofabstractioninprograms.Thestudyoftypesystems--andofprogramminglanguagesfromatype-theoreticperspective--hasimportantapplicationsinsoftwareengineering,languagedesign,high-performancecompilers,andsecurity.Thistextprovidesacomprehensiveintroductionbothtotypesystemsincomputerscienceandtothebasictheoryofprogramminglanguages.Theapproachispragmaticandoperational;eachnewconceptismotivatedbyprogrammingexamplesandthemoretheoreticalsectionsaredrivenbytheneedsofimplementations.Eachchapterisaccompaniedbynumerousexercisesandsolutions,aswellasarunningimplementation.Dependenciesbetweenchaptersareexplicitlyidentified,allowingreaderstochooseavarietyofpathsthroughthematerial.Thecoretopicsincludetheuntypedlambda-calculus,simpletypesystems,typereconstruction,universalandexistentialpolymorphism,subtyping,boundedquantification,recursivetypes,kinds,andtypeoperators.Extendedcasestudiesdevelopavarietyofapproachestomodelingthefeaturesofobject-orientedlanguages.(Thefulltableofcontentsisavailablehere.)
1