From: Jim Pryor Date: Tue, 24 Aug 2010 02:06:01 +0000 (-0400) Subject: Merge branch 'pryor' X-Git-Url: http://lambda.jimpryor.net/git/gitweb.cgi?p=lambda.git;a=commitdiff_plain;h=2bfe2dd7229e77118182ed283cede3a358f6ed8a;hp=ab0ec00e0e06da2fdbed6542e34b1189021e0278 Merge branch 'pryor' --- diff --git a/index.mdwn b/index.mdwn index 457d9c7d..4f1281e5 100644 --- a/index.mdwn +++ b/index.mdwn @@ -175,6 +175,13 @@ superficial syntactic differences between these languages. ##[[Schedule of Topics]]## +##[[Lecture Notes]]## + +##[[Offsite Reading]]## + +There's lots of links here already to tutorials and encyclopedia entries about many of the notions we'll be dealing with. + + ---- All wikis are supposed to have a [[SandBox]], so this one does too. diff --git a/offsite_reading.mdwn b/offsite_reading.mdwn new file mode 100644 index 00000000..ee863af3 --- /dev/null +++ b/offsite_reading.mdwn @@ -0,0 +1,95 @@ +Many off these links are to Wikipedia. You can learn a lot from such articles, +so long as you remember they may sometimes mislead or make mistakes. However, I +hope at this point in your education you'll have learned to be a guarded reader +even of authoritative treatises by eminent authors. So you shouldn't need any +Wikipedia-specific warnings. + +## General issues about variables and binding in programming languages ## + +* [[!wikipedia Variable (programming)]] +* [[!wikipedia Variable shadowing]] +* [[!wikipedia Scope (programming)]] +* [[!wikipedia Free variables and bound variables]] +* [[!wikipedia Name binding]] +* [[!wikipedia Name resolution]] +* [[!wikipedia Parameter (computer science)]] + +## Functions as values, etc ## + +* [[!wikipedia Higher-order function]] +* [[!wikipedia First-class function]] +* [[!wikipedia Closure (computer science)]] +* [[!wikipedia Currying]] +* [[!wikipedia Recursion (computer science)]] + +## Functional vs imperative programming ## + +* [[!wikipedia Declarative programming]] +* [[!wikipedia Functional programming]] +* [[!wikipedia Purely functional]] +* [[!wikipedia Referential transparency (computer science)]] +* [[!wikipedia Imperative programming]] + +## Scheme and OCaml ## + +* [[!wikipedia Scheme (programming language)]] +* [[!wikipedia Objective Caml]] + +## Untyped lambda calculus and combinatory logic ## + +* [[!wikipedia Lambda calculus]] + +* [[!wikipedia Haskell Curry]] +* [[!wikipedia Moses Schönfinkel]] +* [[!wikipedia Alonzo Church]] + +* [[!wikipedia Combinatory logic]] +* [[!wikipedia B,C,K,W system]] +* [[!wikipedia SKI combinatory calculus]] + +* [[!wikipedia Church-Rosser theorem]] +* [[!wikipedia Normalization property]] +* [[!wikipedia Turing completeness]] + +* [[!wikipedia Church encoding]] +* [[!wikipedia Y combinator]] + +* [[!wikipedia Curry-Howard isomorphism]] + +* [[!wikipedia Evaluation strategy]] +* [[!wikipedia Eager evaluation]] +* [[!wikipedia Lazy evaluation]] +* [[!wikipedia Strict programming language]] + +## Types ## + +* [[!wikipedia Tagged union]] +* [[!wikipedia Algebraic data type]] +* [[!wikipedia Pattern matching]] +* [[!wikipedia Unit type]] +* [[!wikipedia Bottom type]] +* [[!wikipedia Typed lambda calculus]] +* [[!wikipedia Simply typed lambda calculus]] +* [[!wikipedia Type polymorphism]] +* [[!wikipedia System F]] + +* [[!wikipedia Side effect (computer science)]] +* [[!wikipedia Reference (computer science)]] +* [[!wikipedia Pointer (computing)]] + +## Continuations ## + +* [[!wikipedia Continuation]] +* [[!wikipedia Continuation-passing style]] +* [[!wikipedia Call-with-current-continuation]] +* [[!wikipedia Delimited continuation]] + +## Monads ## + +* [[!wikipedia Monad (functional programming)]] + +## Linear Logic ## + +* [[!wikipedia Linear logic]] + + diff --git a/schedule_of_topics.mdwn b/schedule_of_topics.mdwn index fad5256c..52455c5e 100644 --- a/schedule_of_topics.mdwn +++ b/schedule_of_topics.mdwn @@ -14,10 +14,11 @@ This is very sketchy at this point, but it should give a sense of our intended s 1. Beta reduction 2. Substitution; using alpha-conversion and other strategies -3. Conversion versus Reduction +3. Conversion versus reduction 4. Eta reduction and "extensionality" 5. Different evaluation strategies (call by name, call by value, etc.) 6. Strongly normalizing vs weakly normalizing vs non-normalizing; Church-Rosser Theorem(s) +6. Lambda calculus compared to combinatorial logic 7. Encoding pairs (and triples and ...) 8. Encoding booleans