Some minor comment and whitespace cleanup.
[clinton/parenscript.git] / docs / internal / notes-and-links.txt
CommitLineData
5aa10005
RD
1Programming languages were at one point a flourishing research area. In some areanas, they still are.
2It is difficult to get a programming language "right." Parenscript is fortunate in that it is
3modelled after a language to which many people have contributed a great deal over many decades.
4
5Most of the links and notes below refer to ideas about Common Lisp. Some are about Javascript,
6the target programming language and environment for Parenscript.
7
8
9Strange Javascript Semantics
10===========================================================================
11var x = 1;
12function foo() {
13 if (x == ONE_OR_NOT_ONE) { var x = 3; }
14 return "bleck: " + x;
15};
16foo();
17
18This code returns "bleck: undefined" when ONE_OR_NOT_ONE is 1 or 2. See
19http://www.ecma-international.org/publications/files/ecma-st/ECMA-262.pdf
20page 37 for an explanation of the semantics of variable scope.
21
22
23var x = 1; function foo(a) { return foo; var foo=5; } foo(3);
24
25=> 'undefined'
26
27var x = 1; function foo(a) { return foo; } foo(3);
28
29=> thee function foo
30
31
32
33
34Reference material
35===========================================================================
36Macro Expansion in Lisp:
37 Common Lisp the Language, 2nd Edition.
38 http://www.cs.cmu.edu/Groups/AI/html/cltl/clm/node99.html
39
40File Compilation:
41 http://www.lispworks.com/documentation/HyperSpec/Body/03_bca.htm
42
43Special forms in Lisp:
44 CLHS
45 http://www.lisp.org/HyperSpec/Body/sec_3-1-2-1-2-1.html
46
47block let* return-from
48catch load-time-value setq
49eval-when locally symbol-macrolet
50flet macrolet tagbody
51function multiple-value-call the
52go multiple-value-prog1 throw
53if progn unwind-protect
54labels progv
55let quote