Revert "Merge branch 'pryor'"
[lambda.git] / offsite_reading.mdwn
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.
6
7 ## General issues about variables and binding in programming languages ##
8
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)]]
16
17 ## Functions as values, etc ##
18
19 *       [[!wikipedia Higher-order function]]
20 *       [[!wikipedia First-class function]]
21 *       [[!wikipedia Closure (computer science)]]
22 *       [[!wikipedia Currying]]
23 *       [[!wikipedia Recursion (computer science)]]
24
25 ## Functional vs imperative programming ##
26
27 *       [[!wikipedia Declarative programming]]
28 *       [[!wikipedia Functional programming]]
29 *       [[!wikipedia Purely functional]]
30 *       [[!wikipedia Referential transparency (computer science)]]
31 *       [[!wikipedia Imperative programming]]
32
33 ## Scheme and OCaml ##
34
35 *       [[!wikipedia Scheme (programming language)]]
36 *       [[!wikipedia Objective Caml]]
37
38 ## Untyped lambda calculus and combinatory logic ##
39
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]]
57
58 ## Types ##
59
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]]
69
70 ## Side-effects / mutation ##
71
72 *       [[!wikipedia Side effect (computer science)]]
73 *       [[!wikipedia Reference (computer science)]]
74 *       [[!wikipedia Pointer (computing)]]
75
76 ## Continuations ##
77
78 *       [[!wikipedia Continuation]]
79 *       [[!wikipedia Continuation-passing style]]
80 *       [[!wikipedia Call-with-current-continuation]]
81 *       [[!wikipedia Delimited continuation]]
82
83 ## Monads ##
84
85 *       [[!wikipedia Monad (functional programming)]]
86
87 ## Linear Logic ##
88
89 *       [[!wikipedia Linear logic]]
90