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]]
42 * [[!wikipedia Haskell Curry]]
43 * [[!wikipedia Moses Schönfinkel]]
44 * [[!wikipedia Alonzo Church]]
46 * [[!wikipedia Combinatory logic]]
47 * [[!wikipedia B,C,K,W system]]
48 * [[!wikipedia SKI combinatory calculus]]
50 * [[!wikipedia Church-Rosser theorem]]
51 * [[!wikipedia Normalization property]]
52 * [[!wikipedia Turing completeness]]
54 * [[!wikipedia Church encoding]]
55 * [[!wikipedia Y combinator]]
57 * [[!wikipedia Curry-Howard isomorphism]]
59 * [[!wikipedia Evaluation strategy]]
60 * [[!wikipedia Eager evaluation]]
61 * [[!wikipedia Lazy evaluation]]
62 * [[!wikipedia Strict programming language]]
66 * [[!wikipedia Tagged union]]
67 * [[!wikipedia Algebraic data type]]
68 * [[!wikipedia Pattern matching]]
69 * [[!wikipedia Unit type]]
70 * [[!wikipedia Bottom type]]
71 * [[!wikipedia Typed lambda calculus]]
72 * [[!wikipedia Simply typed lambda calculus]]
73 * [[!wikipedia Type polymorphism]]
74 * [[!wikipedia System F]]
76 * [[!wikipedia Side effect (computer science)]]
77 * [[!wikipedia Reference (computer science)]]
78 * [[!wikipedia Pointer (computing)]]
82 * [[!wikipedia Continuation]]
83 * [[!wikipedia Continuation-passing style]]
84 * [[!wikipedia Call-with-current-continuation]]
85 * [[!wikipedia Delimited continuation]]
89 * [[!wikipedia Monad (functional programming)]]
93 * [[!wikipedia Linear logic]]