Practical Foundations for Programming Languages



Download free course Practical Foundations for Programming Languages, pdf file on 590 pages by Robert Harper.
Types are the central organizing principle of the theory of programming languages. Language features are manifestations of type structure. The syntax of a language is governed by the constructs that define its types, and its semantics is determined by the interactions among those constructs. The soundness of a language design - the absence of ill-defined programs-follows naturally. The purpose of this book is to explain this remark. A variety of programming language features are analyzed in the unifying framework of type theory. A language feature is defined by its statics, the rules governing the use of the feature in a program, and its dynamics, the rules defining how programs using this feature are to be executed. The concept of safety emerges as the coherence of the statics and the dynamics of a language.

In this way we establish a foundation for the study of programming languages. But why these particular methods? The main justification is provided by the book itself. The methods we use are both precise and intuitive, providing a uniform framework for explaining programming language concepts. Importantly, these methods scale to a wide range of programming language concepts, supporting rigorous analysis of their properties. Although it would require another book in itself to justify this assertion, these methods are also practical in that they are directly applicable to implementation and uniquely effective as a basis for mechanized reasoning. No other framework offers as much.

Table of contents

  • Judgments and Rules
  • Syntactic Objects
  • Inductive Definitions
  • Hypothetical and General Judgments
  • Statics and Dynamics
  • Statics
  • Dynamics
  • Type Safety
  • Evaluation Dynamics
  • Function Types
  • Function Definitions and Values
  • Godel's T
  • Plotkin's PCF
  • Finite Data Types
  • Product Types
  • Sum Types
  • Pattern Matching
  • Generic Programming
  • Infinite Data Types
  • Inductive and Co-Inductive Types
  • Recursive Types
  • Dynamic Types
  • The Untyped -Calculus
  • Dynamic Typing
  • Hybrid Typing
  • Variable Types
  • Girard's System F
  • Abstract Types
  • Constructors and Kinds
  • Subtyping
  • Subtyping
  • Singleton Kinds
  • Classes and Methods
  • Dynamic Dispatch
  • Inheritance
  • Exceptions and Continuations
  • Control Stacks
  • Exceptions
  • Continuations
  • Types and Propositions
  • Constructive Logic
  • Classical Logic
  • Symbols
  • Symbols
  • Fluid Binding
  • Dynamic Classification
  • State
  • Modernized Algol
  • Assignable References
  • Laziness
  • Lazy Evaluation
  • Polarization
  • Parallelism
  • Nested Parallelism
  • Futures and Speculations
  • Concurrency
  • Process Calculus
  • Concurrent Algol
  • Distributed Algol
  • Modularity
  • Components and Linking
  • Type Abstractions and Type Classes
  • Hierarchy and Parameterization
  • Equational Reasoning
  • Equational Reasoning for T
  • Equational Reasoning for PCF
  • Parametricity
  • Process Equivalence
  • Appendices
  • Finite Sets and Finite Functions
Pages : 590
Size : 3.0 MB
File type : PDF
Downloads: 118
Created: 2022-02-03
License: CC BY-NC-ND
Author(s): Robert Harper
Practical Foundations for Programming Languages

Others programming Tutorials

Programming for Computations - Python

Basic Programming Concepts

Object-oriented Programming in C#

Introduction to C and GUI Programming

Professor Frisby's Mostly Adequate Guide to Functional Programming

Others related eBooks about Practical Foundations for Programming Languages

Getting started with Raspberry PI

Getting started with Raspberry Pi, lessons and examples to download for free in PDF format, tutorial created by StackOverflow....

Download Perl language tutorial

Download free Perl tutorial course in PDF, training file in 40 chapters and 141 pages. Free unaffiliated ebook created from Stack OverFlow contributor....

Scratch programming guide in PDF

Download Scratch programming tutorial by Julian Screawn, Scratch facilitate learning programming by designing and using blocks to create animation, games and videos....

Agile Android Software Development

This book teaches you how to turn your ideas into successful apps that everyone will talk about, love, and share. With Agile tools and techniques, any developer can get a chunk of the Android pie! ...

Solving PDEs in Python

Download free course Solving PDEs in Python, pdf file on 152 pages by Hans Petter Langtangen, Anders Logg....

Annotated Algorithms in Python

This book is assembled from lectures given by the author over a period of 10 years at the ..., download free Python tutorial in PDF (388 pages) created by Massimo Di Pierro ....

Think Data Structures: Algorithms and Information Retrieval in Java

Data structures and algorithms are among the most important inventions of the last 50 years, and they are fundamental tools software engineers need to know. But in the author's opinion, most of the books on these topics are too theoretical, too big, and too 'bottom up'....

Algorithms and Data Structures With Applications to Graphics and Geometry

An introductory coverage of algorithms and data structures with application to graphics and geometry. ...

Cryptography in .NET Succinctly

Download free course Cryptography in .NET Succinctly, pdf file on 67 pages by Dirk Strauss....

Programming Computer Vision with Python: Tools and Algorithms for Analyzing Images

This book is a hands-on introduction to computer vision using Python....