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: 114
Created: 2022-02-03
License: CC BY-NC-ND
Author(s): Robert Harper
Practical Foundations for Programming Languages

Others programming Tutorials

Effective AWK Programming, 5th Edition

Introduction to Programming with Fortran

A Field Guide to Genetic Programming

Basic Programming Concepts

Programming Windows Store Apps with HTML, CSS, and JavaScript

Others related eBooks about Practical Foundations for Programming Languages

How to Think Like a Computer Scientist: Learning with Python 3 Documentation

This book is an introduction to computer science using the Python programming language. It covers the basics of computer programming, including variables and values, functions, conditionals and control flow, program development and debugging. Later chapters cover basic algorithms and data structur...

Python Machine Learning Projects

As machine learning is increasingly leveraged to find patterns, conduct analysis, and make..., download free Python tutorial in PDF (135 pages) created by Michelle Morales ....

Using .NET Core, Docker, and Kubernetes Succinctly

Download free course Using .NET Core, Docker, and Kubernetes Succinctly, pdf file on 91 pages by Michele Aponte....

J2EE tutorial in PDF

Download free J2EE tutorial course in PDF, training file in 6 chapters and 39 pages. Free unaffiliated ebook created from Stack OverFlow contributor....

Professor Frisby's Mostly Adequate Guide to Functional Programming

Download free course Professor Frisby's Mostly Adequate Guide to Functional Programming, pdf file on 146 pages by Brian Lonsdorf....

Entity Framework tutorial for professionals

Download free Entity Framework tutorial course in PDF, training file in 23 chapters and 94 pages. Free unaffiliated ebook created from Stack OverFlow contributor....

Arduino Development Cookbook

The single-chip computer board Arduino is small in size but vast in scope, capable of bein..., download free Arduino tutorial in PDF (246 pages) created by Cornel Amariei ....

Get Started with Arduino

Download free course Get Started with Arduino, pdf file on 180 pages by Matt Bradshaw, Jo Hinchliffe, Dr Andrew Lewis, Jenny List, Brian Lough, Graham Morrison, John Wargo....

Object-oriented Programming in C#

Download free course Object-oriented Programming in C#, pdf file on 485 pages by Kurt Normark....

DevOps for Digital Leaders

Learn to design, implement, measure, and improve DevOps programs that are tailored to your..., download free DevOps tutorial in PDF (173 pages) created by Kieran Taylor ....