comparison src/Intro.v @ 332:4a432659a698

Remove Part IV
author Adam Chlipala <adam@chlipala.net>
date Mon, 03 Oct 2011 11:15:51 -0400
parents 06d11a6363cd
children ad315efc3b6b
comparison
equal deleted inserted replaced
331:2eeb96aa0426 332:4a432659a698
135 (** * Prerequisites *) 135 (** * Prerequisites *)
136 136
137 (** 137 (**
138 I try to keep the required background knowledge to a minimum in this book. I will assume familiarity with the material from usual discrete math and logic courses taken by undergraduate computer science majors, and I will assume that readers have significant experience programming in one of the ML dialects, in Haskell, or in some other, closely related language. Experience with only dynamically typed functional languages might lead to befuddlement in some places, but a reader who has come to understand Scheme deeply will probably be fine. 138 I try to keep the required background knowledge to a minimum in this book. I will assume familiarity with the material from usual discrete math and logic courses taken by undergraduate computer science majors, and I will assume that readers have significant experience programming in one of the ML dialects, in Haskell, or in some other, closely related language. Experience with only dynamically typed functional languages might lead to befuddlement in some places, but a reader who has come to understand Scheme deeply will probably be fine.
139 139
140 Part IV of this manuscript is about formalizing programming languages and compilers. That part certainly depends on basic knowledge of formal type systems, operational semantics, and the theorems usually proved about such systems. As a reference on these topics, I recommend %\emph{%#<i>#Types and Programming Languages#</i>#%}~\cite{TAPL}%, by Benjamin C. Pierce. However, my current plan is to break Part IV into a separate, online-only document, since I expect the formalization interests of many readers of the book to lie outside of programming languages. I do often use examples from programming languages in the earlier parts of the book, but I have tried to design them to be comprehensible on the basis of ML or Haskell experience alone. 140 My background is in programming languages, formal semantics, and program verification. I sometimes use examples from that domain, As a reference on these topics, I recommend %\emph{%#<i>#Types and Programming Languages#</i>#%}~\cite{TAPL}%, by Benjamin C. Pierce; however, I have tried to choose examples so that they may be understood without background in semantics.
141 *) 141 *)
142 142
143 143
144 (** * Using This Book *) 144 (** * Using This Book *)
145 145
243 \hline 243 \hline
244 Proof by Reflection & \texttt{Reflection.v} \\ 244 Proof by Reflection & \texttt{Reflection.v} \\
245 \hline 245 \hline
246 Proving in the Large & \texttt{Large.v} \\ 246 Proving in the Large & \texttt{Large.v} \\
247 \hline 247 \hline
248 First-Order Abstract Syntax & \texttt{Firstorder.v} \\
249 \hline
250 Dependent De Bruijn Indices & \texttt{DeBruijn.v} \\
251 \hline
252 Higher-Order Abstract Syntax & \texttt{Hoas.v} \\
253 \hline
254 Type-Theoretic Interpreters & \texttt{Interps.v} \\
255 \hline
256 Extensional Transformations & \texttt{Extensional.v} \\
257 \hline
258 Intensional Transformations & \texttt{Intensional.v} \\
259 \hline
260 Higher-Order Operational Semantics & \texttt{OpSem.v} \\
261 \hline
262 \end{tabular} \end{center} 248 \end{tabular} \end{center}
263 249
264 % *) 250 % *)