tweaks to using page
[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 For most readers, many bits of reading we point you to will be hairy in one way
8 or another. It may be aimed at audiences with more programming experience; it
9 may be aimed at audiences with specific logical background you don't yet have;
10 it may be aimed at audiences familiar with technical areas in linguistics you're
11 first encountering. Or perhaps several of these at once. We hope you will
12 already have mastered the skill of leveraged reading: getting what you can out
13 of an article you don't fully understand, so that you can discuss it with the rest of
14 the group and hopefully get to a point where you can read it again and
15 get more out of out. (Rinse and repeat.)
16
17
18 ## General issues about variables and binding in programming languages ##
19
20 *       [[!wikipedia Variable (programming)]]
21 *       [[!wikipedia Variable shadowing]]
22 *       [[!wikipedia Scope (programming)]]
23 *       [[!wikipedia Free variables and bound variables]]
24 *       [[!wikipedia Name binding]]
25 *       [[!wikipedia Name resolution]]
26 *       [[!wikipedia Parameter (computer science)]]
27
28 ## Functions as values, etc ##
29
30 *       [[!wikipedia Higher-order function]]
31 *       [[!wikipedia First-class function]]
32 *       [[!wikipedia Closure (computer science)]]
33 *       [[!wikipedia Currying]]
34 *       [[!wikipedia Recursion (computer science)]]
35
36 ## Functional vs imperative programming ##
37
38 *       [[!wikipedia Declarative programming]]
39 *       [[!wikipedia Functional programming]]
40 *       [[!wikipedia Purely functional]]
41 *       [[!wikipedia Referential transparency (computer science)]]
42 *       [[!wikipedia Imperative programming]]
43
44 ## Scheme and OCaml ##
45
46 *       [An Introduction to Lambda Calculus and Scheme](http://www.jetcafe.org/~jim/lambda.html) -- aimed at programmers
47 *       [[!wikipedia Scheme (programming language)]]
48 *       [[!wikipedia Objective Caml]]
49
50 ## Untyped lambda calculus and combinatory logic ##
51
52 *       [[!wikipedia Lambda calculus]]<p>
53 *       [[!wikipedia Haskell Curry]]
54 *       [[!wikipedia Moses Schönfinkel]]
55 *       [[!wikipedia Alonzo Church]]<p>
56 *       [[!wikipedia Combinatory logic]]
57 *       [Combinatory logic](http://plato.stanford.edu/entries/logic-combinatory/) at the Stanford Encyclopedia of Philosophy
58 *       [[!wikipedia B,C,K,W system]]
59 *       [[!wikipedia SKI combinatory calculus]]<p>
60 *       [[!wikipedia Church-Rosser theorem]]
61 *       [[!wikipedia Normalization property]]
62 *       [[!wikipedia Turing completeness]]<p>
63 *       [[!wikipedia Church encoding]]
64 *       [[!wikipedia Y combinator]]<p>
65 *       [[!wikipedia Curry-Howard isomorphism]]<p>
66 *       [[!wikipedia Evaluation strategy]]
67 *       [[!wikipedia Eager evaluation]]
68 *       [[!wikipedia Lazy evaluation]]
69 *       [[!wikipedia Strict programming language]]
70
71 ## Types ##
72
73 *       [[!wikipedia Tagged union]]
74 *       [[!wikipedia Algebraic data type]]
75 *       [[!wikipedia Pattern matching]]
76 *       [[!wikipedia Unit type]]
77 *       [[!wikipedia Bottom type]]
78 *       [[!wikipedia Typed lambda calculus]]
79 *       [[!wikipedia Simply typed lambda calculus]]
80 *       [Type Theory](http://plato.stanford.edu/entries/type-theory/) at the Stanford Encyclopedia of Philosophy
81 *       [Church's Type Theory](http://plato.stanford.edu/entries/type-theory-church/) at the Stanford Encyclopedia of Philosophy
82 *       [[!wikipedia Type polymorphism]]
83 *       [[!wikipedia System F]]
84
85 ## Side-effects / mutation ##
86
87 *       [[!wikipedia Side effect (computer science)]]
88 *       [[!wikipedia Reference (computer science)]]
89 *       [[!wikipedia Pointer (computing)]]
90
91 ## Continuations ##
92
93 *       [[!wikipedia Continuation]]
94 *       [[!wikipedia Continuation-passing style]]
95 *       [[!wikipedia Call-with-current-continuation]]
96 *       [Intro to call/cc](http://community.schemewiki.org/?call-with-current-continuation) at SchemeWiki
97 *       [[!wikipedia Delimited continuation]]
98 *       [Delimited/composable continuations tutorial](composable-continuations-tutorial) at SchemeWiki
99
100 ## Monads ##
101
102 *       [[!wikipedia Monad (functional programming)]]
103
104 ## Linear Logic ##
105
106 *       [[!wikipedia Linear logic]]
107