bb78a1657caa9dfb7421c593cfdcb5070825303e
[lambda.git] / _learning_scheme.mdwn
1 *   [Try Scheme in your browser](http://tryscheme.sourceforge.net/) (slow, bare-bones)
2 *   This site's guide to [[Installing Scheme|/installing#scheme]]
3
4 <!-- -->
5 *   Wikipedia on
6 [Lisp](http://en.wikipedia.org/wiki/Lisp_%28programming_language%29),
7 [Scheme](http://en.wikipedia.org/wiki/Scheme_%28programming_language%29),
8 [Racket](http://en.wikipedia.org/wiki/Racket_%28programming_language%29), and
9 [Chicken](http://en.wikipedia.org/wiki/CHICKEN_%28Scheme_implementation%29)
10
11
12 ## Tutorials ##
13
14 *   [Welcome to Racket](http://docs.racket-lang.org/guide/intro.html#%28part._.Interacting_with_.Racket%29) from Racket Guide
15
16 If you are new to programming or if you have the patience to do so, you should work through a textbook:
17
18 *   a recommended text available online is [Teach Yourself Scheme in Fixnum Days](http://www.ccs.neu.edu/home/dorai/t-y-scheme/t-y-scheme.html)
19 *   the *Little Schemer* book(s) we recommended for the seminar are good introductions, requiring more commitment
20 *   [How to Design Programs](http://www.ccs.neu.edu/home/matthias/HtDP2e/) (HtDP),
21 by Matthias Felleisen, et al., is another good choice, which the Racket group recommends  
22 (the [1st ed](http://htdp.org/2003-09-26/Book/) <!-- go up a level for solutions, extra problems, errata -->
23 is also available, and covers some additional topics like mutation; whenever the book says "Scheme," you can read it as "Racket")
24
25 If you're already a programmer and you're in more of a hurry:
26
27 *   you could look at the [Quick Introduction to Racket](http://docs.racket-lang.org/quick/index.html), which uses DrRacket and a picture-drawing library
28 *   or [An Introduction to Lambda Calculus and Scheme](http://www.jetcafe.org/~jim/lambda.html)
29
30
31
32 ## Advanced Racket Docs ##
33
34 *   [Racket Guide](http://docs.racket-lang.org/guide/index.html) starts with a tutorial, then describes the rest of the Racket language. Intended for programmers who are new to (at least some part of) Racket. If you are new to programming, you should instead start with one of the textbooks listed above. Describes parts of the Racket language that go beyond the learning-oriented fragments of HtDP.
35 *   [Racket Reference](http://docs.racket-lang.org/reference/index.html) defines the core Racket language and its most prominent libraries. Less friendly than Racket Guide, but more precise and complete.
36 *   <form action="http://docs.racket-lang.org/search/index.html" method="get">
37 Racket API Search: <input type="text" name="q" /> |
38 racket/[help](http://docs.racket-lang.org/reference/Interactive_Help.html)
39 </form>
40 *   [#lang r5rs](http://docs.racket-lang.org/r5rs/index.html), "cons" expresses mcons
41 *   [#lang r6rs](http://docs.racket-lang.org/r6rs/index.html) or #!r6rs
42 *   Supported [SRFIs](http://docs.racket-lang.org/srfi/index.html)
43 *   [Libraries and collections](http://docs.racket-lang.org/reference/collects.html)
44 *   [(require data)](http://docs.racket-lang.org/data/index.html)
45 *   [(require math)](http://docs.racket-lang.org/math/index.html)
46 *   racket/[enter and rerequire](http://docs.racket-lang.org/reference/interactive.html)
47 *   [Debugging](http://docs.racket-lang.org/reference/debugging.html) |
48 the [Stepper](http://docs.racket-lang.org/stepper/index.html)
49 *   [Deploying](http://docs.racket-lang.org/guide/running.html)
50 *   [raco](http://docs.racket-lang.org/raco/index.html) cmdline tool
51
52 <!-- -->
53 *   Macros in [Guide](http://docs.racket-lang.org/guide/macros.html) |
54 [Reference](http://docs.racket-lang.org/reference/Macros.html)
55 *   [Macro debugger](http://docs.racket-lang.org/macro-debugger/index.html)
56
57
58 <!-- -->
59 *   Racket: [latest release](http://download.racket-lang.org/) |
60 [blog](http://blog.racket-lang.org/) |
61 [wiki](https://github.com/plt/racket/wiki)
62 *   [Style guidelines](http://docs.racket-lang.org/style/index.html) <!-- "How to Program Racket" -->
63 *   [raco pkg](http://docs.racket-lang.org/pkg/) package manager |
64 [repository](http://pkgs.racket-lang.org/#)
65 *   Racket [source](https://github.com/plt/racket/) |
66 [bugs](http://bugs.racket-lang.org/)
67
68
69 <!-- -->
70 *   Typed Racket [Guide](http://docs.racket-lang.org/ts-guide/index.html) |
71 [Reference](http://docs.racket-lang.org/ts-reference/index.html)
72 *   [Lazy Racket](http://docs.racket-lang.org/lazy/index.html)
73 *   [PLT Redex](http://redex.racket-lang.org/), for specifying and testing operational semantics
74
75
76
77 ## Advanced Chicken Docs ##
78
79
80 *   <form action="http://api.call-cc.org/cdoc" method="get">
81 Chicken API Search:
82 <a href="">Chickadee</a> <input name="q" type="text" />
83 <input type="submit" name="query-name" hidden value="Look+up" />
84 <input type="submit" name="query-regex" value="regex" />
85 </form>
86
87
88
89 ## Other Scheme Links ##
90
91 The Scheme language is standardized; the various implementations of the
92 language usually adhere to what's published in the current standard and add on
93 different handy extensions. The first standard was published in 1975. A
94 revision was published a few years later called "The revised report on Scheme, a
95 dialect of Lisp." Thereafter, revisions of the standard were titled "The
96 Revised Revised Report..." and so on, or "The Revised^n Report..." for
97 short. One widely implemented standard is [The
98 Revised^5 Report on Scheme](http://www.schemers.org/Documents/Standards/R5RS/HTML/),
99 or R5RS, published in 1998.
100 Another standard [R6RS](http://www.r6rs.org/final/html/r6rs/r6rs.html) ([libraries](http://www.r6rs.org/final/html/r6rs-lib/r6rs-lib.html))
101 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
102 [R7RS-small](http://trac.sacrideo.us/wg/raw-attachment/wiki/WikiStart/r7rs.pdf)
103 ([errata](http://trac.sacrideo.us/wg/wiki/R7RSSmallErrata)),
104 and a richer language
105 [R7RS-large](http://www.scheme-reports.org/2015/working-group-2.html)
106 (still being designed) that standardizes many add-ons.
107
108 *   [Scheme FAQ](http://community.schemewiki.org/?scheme-faq)
109 *   [Scheme Requests for Implementation](http://srfi.schemers.org/) (SRFIs)
110
111
112 <!-- -->
113 *   [The Scheme Programming Language](http://scheme.com/tspl4/), by R. Kent Dybvig ([errata](http://scheme.com/tspl4-errata.html))
114 *   [Programming Languages: Application and Interpretation/2ed](http://cs.brown.edu/courses/cs173/2012/book/)
115 *   The [Schematics Scheme Cookbook](http://schemecookbook.org/) is a collaborative effort to produce documentation and recipes for using Scheme for common tasks.
116 *   [The Adventures of a Pythonista in Schemeland](http://www.phyast.pitt.edu/~micheles/scheme/index.html)
117 *   [Stack Overflow](http://stackoverflow.com/questions/tagged/scheme?sort=faq) questions tagged "scheme"