http://cs.brown.edu/courses/cs173/2012/book/

1 Introduction

1.1 Our Philosophy

1.2 The Structure of This Book

1.3 The Language of This Book

 

2 Everything (We Will Say) About Parsing

2.1 A Lightweight, Built-In First Half of a Parser

2.2 A Convenient Shortcut

2.3 Types for Parsing

2.4 Completing the Parser

2.5 Coda

 

3 A First Look at Interpretation

3.1 Representing Arithmetic

3.2 Writing an Interpreter

3.3 Did You Notice?

3.4 Growing the Language

 

4 A First Taste of Desugaring

4.1 Extension: Binary Subtraction

4.2 Extension: Unary Negation

 

5 Adding Functions to the Language

5.1 Defining Data Representations

5.2 Growing the Interpreter

5.3 Substitution

5.4 The Interpreter, Resumed

5.5 Oh Wait, There’s More!

 

6 From Substitution to Environments

6.1 Introducing the Environment

6.2 Interpreting with Environments

6.3 Deferring Correctly

6.4 Scope

6.4.1 How Bad Is It?

6.4.2 The Top-Level Scope

6.5 Exposing the Environment

 

7 Functions Anywhere

7.1 Functions as Expressions and Values

7.2 Nested What?

7.3 Implementing Closures

7.4 Substitution, Again

7.5 Sugaring Over Anonymity

 

8 Mutation: Structures and Variables

8.1 Mutable Structures

8.1.1 A Simple Model of Mutable Structures

8.1.2 Scaffolding

8.1.3 Interaction with Closures

8.1.4 Understanding the Interpretation of Boxes

8.1.5 Can the Environment Help?

8.1.6 Introducing the Store

8.1.7 Interpreting Boxes

8.1.8 The Bigger Picture

8.2 Variables

8.2.1 Terminology

8.2.2 Syntax

8.2.3 Interpreting Variables

8.3 The Design of Stateful Language Operations

8.4 Parameter Passing

 

9 Recursion and Cycles: Procedures and Data

9.1 Recursive and Cyclic Data

9.2 Recursive Functions

9.3 Premature Observation

9.4 Without Explicit State

 

10 Objects

10.1 Objects Without Inheritance

10.1.1 Objects in the Core

10.1.2 Objects by Desugaring

10.1.3 Objects as Named Collections

10.1.4 Constructors

10.1.5 State

10.1.6 Private Members

10.1.7 Static Members

10.1.8 Objects with Self-Reference

10.1.8.1 Self-Reference Using Mutation

10.1.8.2 Self-Reference Without Mutation

10.1.9 Dynamic Dispatch

10.2 Member Access Design Space

10.3 What (Goes In) Else?

10.3.1 Classes

10.3.2 Prototypes

10.3.3 Multiple Inheritance

10.3.4 Super-Duper!

10.3.5 Mixins and Traits

 

11 Memory Management

11.1 Garbage

11.2 What is “Correct” Garbage Recovery?

11.3 Manual Reclamation

11.3.1 The Cost of Fully-Manual Reclamation

11.3.2 Reference Counting

11.4 Automated Reclamation, or Garbage Collection

11.4.1 Overview

11.4.2 Truth and Provability

11.4.3 Central Assumptions

11.5 Convervative Garbage Collection

11.6 Precise Garbage Collection

 

12 Representation Decisions

12.1 Changing Representations

12.2 Errors

12.3 Changing Meaning

12.4 One More Example

 

13 Desugaring as a Language Feature

13.1 A First Example

13.2 Syntax Transformers as Functions

13.3 Guards

13.4 Or: A Simple Macro with Many Features

13.4.1 A First Attempt

13.4.2 Guarding Evaluation

13.4.3 Hygiene

13.5 Identifier Capture

13.6 Influence on Compiler Design

13.7 Desugaring in Other Languages

 

14 Control Operations

14.1 Control on the Web

14.1.1 Program Decomposition into Now and Later

14.1.2 A Partial Solution

14.1.3 Achieving Statelessness

14.1.4 Interaction with State

14.2 Continuation-Passing Style

14.2.1 Implementation by Desugaring

14.2.2 Converting the Example

14.2.3 Implementation in the Core

14.3 Generators

14.3.1 Design Variations

14.3.2 Implementing Generators

14.4 Continuations and Stacks

14.5 Tail Calls

14.6 Continuations as a Language Feature

14.6.1 Presentation in the Language

14.6.2 Defining Generators

14.6.3 Defining Threads

14.6.4 Better Primitives for Web Programming

 

15 Checking Program Invariants Statically: Types

15.1 Types as Static Disciplines

15.2 A Classical View of Types

15.2.1 A Simple Type Checker

15.2.2 Type-Checking Conditionals

15.2.3 Recursion in Code

15.2.3.1 A First Attempt at Typing Recursion

15.2.3.2 Program Termination

15.2.3.3 Typing Recursion

15.2.4 Recursion in Data

15.2.4.1 Recursive Datatype Definitions

15.2.4.2 Introduced Types

15.2.4.3 Pattern-Matching and Desugaring

15.2.5 Types, Time, and Space

15.2.6 Types and Mutation

15.2.7 The Central Theorem: Type Soundness

15.3 Extensions to the Core

15.3.1 Explicit Parametric Polymorphism

15.3.1.1 Parameterized Types

15.3.1.2 Making Parameters Explicit

15.3.1.3 Rank-1 Polymorphism

15.3.1.4 Interpreting Rank-1 Polymorphism as Desugaring

15.3.1.5 Alternate Implementations

15.3.1.6 Relational Parametricity

15.3.2 Type Inference

15.3.2.1 Constraint Generation

15.3.2.2 Constraint Solving Using Unification

15.3.2.3 Let-Polymorphism

15.3.3 Union Types

15.3.3.1 Structures as Types

15.3.3.2 Untagged Unions

15.3.3.3 Discriminating Untagged Unions

15.3.3.4 Retrofitting Types

15.3.3.5 Design Choices

15.3.4 Nominal Versus Structural Systems

15.3.5 Intersection Types

15.3.6 Recursive Types

15.3.7 Subtyping

15.3.7.1 Unions

15.3.7.2 Intersections

15.3.7.3 Functions

15.3.7.4 Implementing Subtyping

15.3.8 Object Types

 

16 Checking Program Invariants Dynamically: Contracts

16.1 Contracts as Predicates

16.2 Tags, Types, and Observations on Values

16.3 Higher-Order Contracts

16.4 Syntactic Convenience

16.5 Extending to Compound Data Structures

16.6 More on Contracts and Observations

16.7 Contracts and Mutation

16.8 Combining Contracts

16.9 Blame

 

17 Alternate Application Semantics

17.1 Lazy Application

17.1.1 A Lazy Application Example

17.1.2 What Are Values?

17.1.3 What Causes Evaluation?

17.1.4 An Interpreter

17.1.5 Laziness and Mutation

17.1.6 Caching Computation

17.2 Reactive Application

17.2.1 Motivating Example: A Timer

17.2.2 Callback Types are Four-Letter Words

17.2.3 The Alternative: Reactive Languages

17.2.4 Implementing Transparent Reactivity

17.2.4.1 Dataflow Graph Construction

17.2.4.2 Dataflow Graph Update

17.2.4.3 Evaluation Order

Programming Languages: Application and Interpretation的更多相关文章

  1. Coursera课程 Programming Languages, Part A 总结

    Coursera CSE341: Programming Languages 感谢华盛顿大学 Dan Grossman 老师 以及 Coursera . 碎言碎语 这只是 Programming La ...

  2. Coursera课程 Programming Languages, Part B 总结

    Programming Languages, Part A Programming Languages, Part B Part A 笔记 碎言碎语 很多没有写过 Lisp 程序的人都会对 Lisp ...

  3. Hex Dump In Many Programming Languages

    Hex Dump In Many Programming Languages See also: ArraySumInManyProgrammingLanguages, CounterInManyPr ...

  4. ESSENTIALS OF PROGRAMMING LANGUAGES (THIRD EDITION) :编程语言的本质 —— (一)

    # Foreword> # 序 This book brings you face-to-face with the most fundamental idea in computer prog ...

  5. Comparison of programming languages

    The following table compares general and technical information for a selection of commonly used prog ...

  6. Natural language style method declaration and usages in programming languages

    More descriptive way to declare and use a method in programming languages At present, in most progra ...

  7. The future of programming languages

    In this video from JAOO Aarhus 2008 Anders Hejlsberg takes a look at the future of programming langu ...

  8. Coursera课程 Programming Languages 总结

    课程 Programming Languages, Part A Programming Languages, Part B Programming Languages, Part C CSE341: ...

  9. The history of programming languages.(transshipment) + Personal understanding and prediction

    To finish this week's homework that introduce the history of programming languages , I surf the inte ...

随机推荐

  1. python3 库pandas写入csv格式文件出现中文乱码问题解决方法

    python3 库pandas写入csv格式文件出现中文乱码问题解决方法 解决方案: 问题是使用pandas的DataFrame的to_csv方法实现csv文件输出,但是遇到中文乱码问题,已验证的正确 ...

  2. 20145319 《网络渗透》MS12_020安全漏洞

    20145319 <网络渗透>MS12_020安全漏洞 一 实验内容 初步掌握平台matesploit辅助模块aux的使用 辅助模块包括扫描等众多辅助功能 本次展示DOS攻击的实现 有了初 ...

  3. 封装JS实现Ajax

    这两天仔细理解了一下Ajax,然后整理封装了一下,如果有什么不对的地方,请指教,谢谢! AJAX AJAX = Asynchronous JavaScript and XML(异步的 JavaScri ...

  4. git中Untracked files如何清除

    $ git status # On branch test # Untracked files: # (use "git add <file>..." to inclu ...

  5. 计算机基础教程11 - 互联网&内联网

    在本章中,我们将看到什么是Internet和Intranet,以及讨论两者之间的异同. 互联网 它是互联计算机网络的全球/全球系统.它使用标准的Internet协议(TCP / IP).Interne ...

  6. Redis之hash数据结构实现

    参考 https://www.cnblogs.com/ourroad/p/4891648.html https://blog.csdn.net/hjkl950217/article/details/7 ...

  7. CSS 再学习,基础篇

    语法 h1 {color:red; font-size:14px;} 共享声明 h1,h2,h3,h4,h5,h6 { color: green; } 继承 通过 CSS 继承,子元素将继承最高级元素 ...

  8. 路由跟踪tracert

    Tracert命令 如果我们要测试某一个IP都经过哪些路由,用trcert命令即可,这是dos下的一个基本网络命令,具体使用方法: 1,在windows系统下,打开 运行 :输入 cmd :在弹出的d ...

  9. Access数据库 更新 "延时" 现象

    最近发现 Access数据库执行Update或Delete操作成功后,执行select回来的数据未更改.打开数据库查看时却发现已更改,再次执行select 后却发现正常了. 经调试发现:Access数 ...

  10. codeforce——因数筛

    题目大意:给你一个 n 和 k 求 n 的第 k 个因数. #include<iostream> #include <algorithm> #include <queue ...