1 Many off these links are to Wikipedia. You can learn a lot from such articles,
2 so long as you remember they may sometimes mislead or make mistakes. However, I
3 hope at this point in your education you'll have learned to be a guarded reader
4 even of authoritative treatises by eminent authors. So you shouldn't need any
5 Wikipedia-specific warnings.
7 ## General issues about variables and binding in programming languages ##
9 * [[!wikipedia Variable (programming)]]
10 * [[!wikipedia Variable shadowing]]
11 * [[!wikipedia Scope (programming)]]
12 * [[!wikipedia Free variables and bound variables]]
13 * [[!wikipedia Name binding]]
14 * [[!wikipedia Name resolution]]
15 * [[!wikipedia Parameter (computer science)]]
17 ## Functions as values, etc ##
19 * [[!wikipedia Higher-order function]]
20 * [[!wikipedia First-class function]]
21 * [[!wikipedia Closure (computer science)]]
22 * [[!wikipedia Currying]]
23 * [[!wikipedia Recursion (computer science)]]
25 ## Functional vs imperative programming ##
27 * [[!wikipedia Declarative programming]]
28 * [[!wikipedia Functional programming]]
29 * [[!wikipedia Purely functional]]
30 * [[!wikipedia Referential transparency (computer science)]]
31 * [[!wikipedia Imperative programming]]
33 ## Scheme and OCaml ##
35 * [[!wikipedia Scheme (programming language)]]
36 * [[!wikipedia Objective Caml]]
38 ## Untyped lambda calculus and combinatory logic ##
40 * [[!wikipedia Lambda calculus]]<p>
41 * [[!wikipedia Haskell Curry]]
42 * [[!wikipedia Moses Schönfinkel]]
43 * [[!wikipedia Alonzo Church]]<p>
44 * [[!wikipedia Combinatory logic]]
45 * [[!wikipedia B,C,K,W system]]
46 * [[!wikipedia SKI combinatory calculus]]<p>
47 * [[!wikipedia Church-Rosser theorem]]
48 * [[!wikipedia Normalization property]]
49 * [[!wikipedia Turing completeness]]<p>
50 * [[!wikipedia Church encoding]]
51 * [[!wikipedia Y combinator]]<p>
52 * [[!wikipedia Curry-Howard isomorphism]]<p>
53 * [[!wikipedia Evaluation strategy]]
54 * [[!wikipedia Eager evaluation]]
55 * [[!wikipedia Lazy evaluation]]
56 * [[!wikipedia Strict programming language]]
60 * [[!wikipedia Tagged union]]
61 * [[!wikipedia Algebraic data type]]
62 * [[!wikipedia Pattern matching]]
63 * [[!wikipedia Unit type]]
64 * [[!wikipedia Bottom type]]
65 * [[!wikipedia Typed lambda calculus]]
66 * [[!wikipedia Simply typed lambda calculus]]
67 * [[!wikipedia Type polymorphism]]
68 * [[!wikipedia System F]]
70 ## Side-effects / mutation ##
72 * [[!wikipedia Side effect (computer science)]]
73 * [[!wikipedia Reference (computer science)]]
74 * [[!wikipedia Pointer (computing)]]
78 * [[!wikipedia Continuation]]
79 * [[!wikipedia Continuation-passing style]]
80 * [[!wikipedia Call-with-current-continuation]]
81 * [[!wikipedia Delimited continuation]]
85 * [[!wikipedia Monad (functional programming)]]
89 * [[!wikipedia Linear logic]]