refine
[lambda.git] / _learning_scheme.mdwn
index 35190fa..8f27021 100644 (file)
@@ -12,6 +12,7 @@
 ## Tutorials ##
 
 *   [Welcome to Racket](http://docs.racket-lang.org/guide/intro.html#%28part._.Interacting_with_.Racket%29) from Racket Guide
+*   Chicken [Getting started](http://wiki.call-cc.org/man/4/Getting%20started)
 
 If you are new to programming or if you have the patience to do so, you should work through a textbook:
 
@@ -37,7 +38,7 @@ If you're already a programmer and you're in more of a hurry:
 Racket API Search: <input type="text" name="q" /> |
 racket/[help](http://docs.racket-lang.org/reference/Interactive_Help.html)
 </form>
-*   [#lang r5rs](http://docs.racket-lang.org/r5rs/index.html), "cons" expresses mcons
+*   [#lang r5rs](http://docs.racket-lang.org/r5rs/index.html), `'cons` expresses `mcons`
 *   [#lang r6rs](http://docs.racket-lang.org/r6rs/index.html) or #!r6rs
 *   Supported [SRFIs](http://docs.racket-lang.org/srfi/index.html)
 *   [Libraries and collections](http://docs.racket-lang.org/reference/collects.html)
@@ -65,7 +66,6 @@ the [Stepper](http://docs.racket-lang.org/stepper/index.html)
 *   Racket [source](https://github.com/plt/racket/) |
 [bugs](http://bugs.racket-lang.org/)
 
-
 <!-- -->
 *   [[Extending Racket]] <!-- this site -->
 *   Typed Racket [Guide](http://docs.racket-lang.org/ts-guide/index.html) |
@@ -74,31 +74,50 @@ the [Stepper](http://docs.racket-lang.org/stepper/index.html)
 *   [PLT Redex](http://redex.racket-lang.org/), for specifying and testing operational semantics
 
 
-
 ## Advanced Chicken Docs ##
 
-
+*   [(declare (uses *unit*)) vs (include "*path*")](http://wiki.call-cc.org/man/4/Basic%20mode%20of%20operation)
+*   Using [csi](http://wiki.call-cc.org/man/4/Using%20the%20interpreter) |
+[csc](http://wiki.call-cc.org/man/4/Using%20the%20compiler) |
+[deploying](http://wiki.call-cc.org/man/4/Deployment)
+*   Supported [language](http://wiki.call-cc.org/man/4/Supported%20language) |
+[standards](http://wiki.call-cc.org/supported-standards)
 *   <form action="http://api.call-cc.org/cdoc" method="get">
 Chicken API Search:
 <a href="">Chickadee</a> <input name="q" type="text" />
 <input type="submit" name="query-name" hidden value="Look+up" />
 <input type="submit" name="query-regex" value="regex" />
 </form>
+*   [FAQ](http://wiki.call-cc.org/man/4/faq)
+*   Chicken [development](http://code.call-cc.org/#development) |
+[process](http://wiki.call-cc.org/development-process) |
+[bugs](http://bugs.call-cc.org/)
+
+
+<!-- -->
+*   [Data model](http://wiki.call-cc.org/man/4/Data%20representation) |
+[internals](http://wiki.call-cc.org/Internals) |
+[FFI](http://wiki.call-cc.org/man/4/Interface%20to%20external%20functions%20and%20variables)
+*   [Eggs](http://wiki.call-cc.org/eggs) |
+[Eggs2](http://wiki.call-cc.org/man/4/Extensions) |
+[Repository](http://wiki.call-cc.org/chicken-projects/egg-index-4.html)
+*   [Distributed egg repos](http://wiki.call-cc.org/distributed-egg-repos)
+*   [chicken-setup](http://manpages.ubuntu.com/manpages/karmic/man1/chicken-setup.1.html)
+*   [chicken-install](http://manpages.ubuntu.com/manpages/utopic/en/man1/chicken-install.1.html)
+*   Tutorial on writing eggs: [1](http://shisaa.jp/postset/chicken-scheme-1.html) [2](http://shisaa.jp/postset/chicken-scheme-2.html) [3](http://shisaa.jp/postset/chicken-scheme-3.html)
 
 
 
 ## Other Scheme Links ##
 
-The Scheme language is standardized; the various implementations of the
-language usually adhere to what's published in the current standard and add on
-different handy extensions. The first standard was published in 1975. A
-revision was published a few years later called "The revised report on Scheme, a
-dialect of Lisp." Thereafter, revisions of the standard were titled "The
-Revised Revised Report..." and so on, or "The Revised^n Report..." for
-short. One widely implemented standard is [The
-Revised^5 Report on Scheme](http://www.schemers.org/Documents/Standards/R5RS/HTML/),
-or R5RS, published in 1998.
-Another standard [R6RS](http://www.r6rs.org/final/html/r6rs/r6rs.html) ([libraries](http://www.r6rs.org/final/html/r6rs-lib/r6rs-lib.html))
+The Scheme language is standardized; the various implementations of the language usually adhere to what's published in the current standard and add on
+different handy extensions. The first standard was published in 1975. A revision was published a few years later called "The revised report on Scheme, a
+dialect of Lisp." Thereafter, revisions of the standard were titled "The Revised Revised Report..." and so on, or "The Revised^n Report..." for
+short. One widely implemented standard is
+[The Revised^5 Report on Scheme](http://www.schemers.org/Documents/Standards/R5RS/HTML/),
+or R5RS, published in 1998. Another standard
+[R6RS](http://www.r6rs.org/final/html/r6rs/r6rs.html)
+([libraries](http://www.r6rs.org/final/html/r6rs-lib/r6rs-lib.html))
 was ratified in 2007, but had many detractors and wasn't fully accepted in the community. Currently Scheme is being split into a lean minimal base, now ratified as
 [R7RS-small](http://trac.sacrideo.us/wg/raw-attachment/wiki/WikiStart/r7rs.pdf)
 ([errata](http://trac.sacrideo.us/wg/wiki/R7RSSmallErrata)),
@@ -111,8 +130,42 @@ and a richer language
 
 
 <!-- -->
-*   [The Scheme Programming Language](http://scheme.com/tspl4/), by R. Kent Dybvig ([errata](http://scheme.com/tspl4-errata.html))
-*   [Programming Languages: Application and Interpretation/2ed](http://cs.brown.edu/courses/cs173/2012/book/)
-*   The [Schematics Scheme Cookbook](http://schemecookbook.org/) is a collaborative effort to produce documentation and recipes for using Scheme for common tasks.
+*   [The Scheme Programming Language](http://scheme.com/tspl4/)/4ed, by R. Kent Dybvig ([errata](http://scheme.com/tspl4-errata.html))
+*   [Structure and Interpretation of Computer Programs](http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-4.html)/2ed (SICP)
+*   [Programming Languages: Application and Interpretation](http://cs.brown.edu/courses/cs173/2012/book/)/2ed
+
+<!-- -->
 *   [The Adventures of a Pythonista in Schemeland](http://www.phyast.pitt.edu/~micheles/scheme/index.html)
+*   [Comparing Chicken to C, Python, and Perl](http://wiki.call-cc.org/language-comparison)
+*   [Chicken for Pythonistas](http://wiki.call-cc.org/chicken-for-python-programmers)
+*   [Haskell vs Scheme](http://www.reddit.com/r/programming/comments/nq1k/haskell_and_scheme_which_one_and_why/)
+
+<!-- -->
+*   Chicken [Tips and tricks](http://wiki.call-cc.org/tips%20and%20tricks)
+*   The [Schematics Scheme Cookbook](http://schemecookbook.org/) is a collaborative effort to produce documentation and recipes for using Scheme for common tasks.
 *   [Stack Overflow](http://stackoverflow.com/questions/tagged/scheme?sort=faq) questions tagged "scheme"
+*   [Scheme Wiki](http://community.schemewiki.org/)
+*   [Documents at Schemers.org](http://www.schemers.org/Documents/)
+
+
+
+
+
+<!--
+Scheme is a very small language which is based on Lisp, the oldest of functional programming languages. Scheme's main advantages are elegance (the entire language can be built on top of a handful of primitive list manipulating operations), and the enormous corpus of educational material which has been created for it. As such, Scheme is the perfect place to start learning the techniques of functional abstraction. If you decide to study Scheme, you should make sure you that your path through the available material brings you into contact with all of the following (in no particular order):
+
+    recursion (vs. iteration)
+    bottom-up design
+    first-class functions <http://steve-yegge.blogspot.com/2006/03/execution-in-kingdom-of-nouns.html>
+    lambda functions
+    closures
+    continuations
+    macros
+
+An excellent place to start is the book: Structure and Interpretation of Computer Programs (considered by some the "bible" of functional programming, which may give a false implication as to its breadth, despite it being a very good book). There are also countless other great books and websites which have been published to answer questions on how to learn Lisp, why to learn Lisp, etc., so searching the web will most certainly be worth your time. 
+-->
+
+<!--
+[Racket and vim](http://docs.racket-lang.org/guide/Vim.html)
+[Chicken and vim](http://wiki.call-cc.org/vim)
+-->