Semantics of Programming Languages exposes the basic motivations and philosophy underlying the applications of semantic techniques in computer science. It introduces the mathematical theory of programming languages with an emphasis on higher-order functions and type systems. Designed as a text for upper-level and graduate-level students, the mathematically sophisticated approach will also prove useful to professionals who want an easily referenced description of fundamental results and calculi. Basic connections between computational behavior, denotational semantics, and the equational logic of functional programs are thoroughly and rigorously developed. Topics covered include models of types, operational semantics, category theory, domain theory, fixed point (denotational). semantics, full abstraction and other semantic correspondence criteria, types and evaluation, type checking and inference, parametric polymorphism, and subtyping. All topics are treated clearly and in depth, with complete proofs for the major results and numerous exercises.
is really the limit of an infinite sequence of functions
fac0 n = if n==0 then 1 else ┴ fac1 n = if n==0 then 1 else n * fac0 (n-1) fac2 n = if n==0 then 1 else n * fac1 (n-1) ...
In order to speak of a limit, you need to define a topology. In order to see how the limit in Haskell becomes the limit in the machine language Haskell is translated into, you need to define continuous functions. If you spend much of your life doing it, you will become a post-Doc Haskell programmer.
The lack of examples makes it hard to follow some concepts. A reader who already knows about category theory, lambda-calculus would be fit for reading the book. Also, there are some syntactical mistakes, which made it even harder to understand.