Knowledge (XXG)

Racket features

Source đź“ť

2449:. This language has a number of useful features, such as uniform representation for higher-order functions (avoiding the pitfalls when callbacks and callouts are different), struct definitions that are similar to plain Racket structs, and custom function types that can represent input and output pointers, implicit arguments (e.g., an argument that provides the number of elements in a vector that is passed as another argument). By using this interface to access underlying GUI toolkits, Racket implements its own GUI layer, in Racket. 2596:@; Generate a PDF or an HTML document using `scribble' @(require (planet neil/numspell)) @title{99 Bottles of Beer} In case you need some @emph{blah blah} in your life. @(apply itemlist (for/list () (define N (number->english n)) (define N-- (number->english (sub1 n))) @item{@string-titlecase bottles of beer on the wall, @N bottles of beer. Take one down, pass it around, @N-- bottles of beer on the wall.})) 5285: 5275: 5255: 5245: 5265: 78:
The moving memory manager (aka "3m") is a precise garbage collector, and it has been Racket's default collector since 2007. This collector is a generational one, and it supports memory accounting via custodians (see below). The collector is implemented as a C source transformer that is itself written
71:
was used. However, conservative collection is impractical for long-running processes such as a web server—such processes tend to slowly leak memory. Also, there are pathological cases where a conservative collector leaks memory fast enough to make certain programs impossible to run. For example, when
3583:
Another supported language is plai which like racket can be typed or untyped. "Modules written in plai export every definition (unlike scheme)." "The Typed PLAI language differs from traditional Racket most importantly by being statically typed. It also gives some useful new constructs: define-type,
635:
Racket features the concept of a "custodian": a kind of value that acts as a resource manager. This is often used in network servers, where each connection is dealt with in a new custodian, making it easy to "clean-up" all resources that might have been left open by the handler (e.g., open ports).
2577:
Scribble, Racket's documentation system, comes in the form of a number of languages that are used to write prose. It is used for Racket's documentation, as well as writing books and articles. Actually, rather than a single "scribble" language, it is a family of (very similar) dialects, each for a
3094:
The PLT group which develops Racket has traditionally been involved in education at all levels. One of the earliest research ideas that the group promoted is the use of language levels, which restrict new students while providing them with helpful error messages that fit the student's level of
2629:
that it implements is unique in that the motivation in developing it was accommodating as much idiomatic Racket code as possible—as a result, it includes subtypes, unions, and much more. Another goal of Typed Racket is to allow migration of parts of a program into the typed language, so it
2445:, and send out callbacks to Racket functions (using libffi closures). The core implementation is a thin layer atop libffi (written in C), and the full interface is then implemented via Racket code. The interface uses macros extensively, resulting in an expressive Racket-based 1412:
DrRacket editors can contain images, and DrRacket displays image values just like any other type of value (such as integers or lists). Running the above program, for example, actually displays a Sierpinski triangle, which can be cut and pasted into another program.
2600:
The most striking feature of the Scribble languages is their use of a new syntax, which is designed specifically for textually rich code. The syntax allows free-form text, string interpolation, customizable quotations, and is useful in other applications such as
2910:
port. Unlike the Scribble syntax, the first two of these languages use an all-new syntax rather than an extension of S-expressions. If used it in DrRacket, it provides proper highlighting, the usual host of tools check syntax, and a Prolog/Datalog REPL.
4035: 4014:
is a macro that is used in all function calls, making this language not too efficient, as every function call incurs an added condition. Also, the macro evaluates the function expression twice, so it should not be taken as an example of good
832:
Custodians, combined with the memory accounting feature of the 3m garbage collector, and several added runtime parameters that control more aspects of the runtime, make it possible to create fully safe sandboxed execution contexts. The
72:
traversing an infinite list, a single conservative mistake of retaining a pointer leads to keeping the complete list in memory, quickly overflowing available memory. This collector is often referred to as "CGC" in the Racket community.
1464: 99:. This complements the precise garbage collector and in some cases, like in the implementation of Lazy Racket, the two features are crucial for proper execution. This is in addition to further compiler optimizations such as 2634:
to enforce type invariants. This is considered a desirable feature of an application's lifetime stages, as it matures from "a script" to "an application", where static typing helps in maintenance of a large body of code.
844:
on the specified port; connecting to this port will look like a plain Racket REPL, except that the evaluation is subject to the various protection aspects of the sandbox. For example, it is not possible to access the
2565:
Such languages are used extensively in the Racket distribution and in user libraries. In fact, creating a new language is so straightforward, that there are some languages that have less than a handful of uses.
26:
since the mid-1990s, and has accumulated many features over the years. This article describes and demonstrates some of these features. Note that one of Racket's main design goals is to accommodate creating new
2562:
The module system plays an important role in combining these features, and making it possible to write code that spans across a number of modules, where each can be written in a different language.
4936: 42:
The core Racket implementation is highly flexible. Even without using dialects, it can function as a full-featured scripting language, capable of running both with and without windows-native
4039: 3997:
Krishnamurthi, Shriram. "Programming Languages: Application and Interpretation." Programming Languages: Application and Interpretation. Brown University, n.d. Web. 14 Mar. 2016. <
4089: 4845: 2605:, generating text, and HTML template systems. Note that the syntax extends plain S-expressions, and is implemented as an alternative input for such expressions. 1423: 1049:
Racket also includes the functions needed to write scrapers and robots. As an example, the following function lists the Google results for a search string.
35:
and completely new languages. Therefore, some of the following examples are in different languages, but they are all implemented in Racket. Please refer to
849:
from this REPL, create network connection, run subprocesses, or use too much time or memory. (In fact, this REPL is safe enough to be given out publicly.)
4942: 4339: 627:, and a (perl-compatible) regular expression. It scans the base directory for files with the given suffix, and print lines matching the regexp pattern. 471:
line, making it possible to turn such programs to executable scripts. The following script demonstrates this, in addition to using Racket's library for
5289: 5249: 4572: 2555:
a rich runtime system, providing features that language implementors can use, like (composable, delimited) continuations, resource management, etc.,
4082: 2581:
To run the following example, copy it into DrRacket and click one of the two scribble rendering buttons that will appear (PDF rendering requires
4930: 4116: 60: 3767:
except for two special "hook macros" that implement unbound variable lookup and function calls, instead of these, new forms are provided to
5279: 5269: 4981: 2542: 4219: 3907: 5057: 5037: 4947: 4791: 4121: 4075: 4608: 5259: 5052: 5016: 4355: 4376: 4360: 4205: 2446: 1420:
library constructs image values for more mature audiences and needs. For example, the following program plots the sum of two
4152: 839: 5309: 5125: 4717: 4409: 4330: 2452:
The FFI can be used in a number of different ways: from writing a complete glue layer for a library (as done for Racket's
472: 275: 128: 88: 36: 23: 17: 270:
The combination of dynamic compilation and a rich system interface makes Racket a capable scripting language, similar to
4899: 4563: 4386: 4157: 5314: 5163: 4711: 4478: 4424: 4401: 4365: 4185: 4098: 2156:
For example, the following program displays in full-screen a title slide, followed by a slide with some pictures. The
2612:
Hi, I'm a text file -- run me. @(define (thrice . text) @list{@text, @text, @text}) @thrice{SPAM}! @thrice{HAM}!
4673: 4653: 4638: 4623: 4543: 2430: 75:
SenoraGC is an alternative conservative garbage collector that is intended mainly for debugging and memory tracing.
5094: 4726: 4598: 4320: 4194: 2538: 80: 5254: 5011: 4824: 4434: 4167: 4141: 2438: 104: 43: 32: 5186: 281:
The following example demonstrates walking a directory tree, starting at the current directory. It uses the
68: 4829: 4668: 4314: 4279: 4252: 3096: 2804:
is an infinite list which 1000th element will not be computed until its value is needed for the printout.
1280: 1279:
library provides convenient functions for constructing images. This library is mainly used by students in
96: 5138: 4840: 4796: 4774: 4296: 4131: 2569:
Racket comes with a number of useful languages, some are very different from Racket's default language.
2164:
functions combine pictures vertically and horizontally, respectively, and centered on the other axis.
2153:, but with Racket's programming facilities. Elements of the slides are pictures that can be combined. 2130:
The GUI can be hand-coded in this way or with the help of a GUI designer program available on PLaneT.
1275:
Graphic capabilities come in several different flavors that are intended for different audiences. The
5042: 4996: 4764: 28: 4247: 4175: 1288: 124: 5148: 5133: 5085: 4991: 4274: 4228: 2631: 2138: 624: 3969:
Tobin-Hochstadt, S.; Felleisen, M. (2006). "Interlanguage Migration: From Scripts to Programs".
2456:
binding), to quickly pulling out a single foreign function. An example of the latter approach:
623:
The script is a grep-like utility, expecting three command-line arguments: a base directory, a
371:
The next example uses a hash table to record previously seen lines and print only unique ones.
5224: 5143: 5110: 4744: 4628: 3773:
allow hash tables to be used as functions, where the arguments are used for hash-table lookup.
2895: 837:
library provides this kind of functionality in a simple way. The following example creates a
5090: 5062: 4976: 4894: 4703: 3954:
Tobin-Hochstadt, S.; Felleisen, M. (2008). "The Design and Implementation of Typed Scheme".
3911: 2622: 2552:
an extensive macro system—functioning as a compiler-API—that can create new syntactic forms,
116: 3984: 5201: 5196: 4971: 4862: 4285: 4268: 3100: 2793: 1459:{\displaystyle \mathbb {R} \times \mathbb {R} \times \mathbb {R} \rightarrow \mathbb {R} } 1865:
function defined here produces a function that is used for the button's callback action.
5191: 5181: 5176: 5115: 4986: 4391: 4126: 3871: 2442: 2150: 468: 100: 95:
elimination. Racket takes this further: the language is made fully safe-for-space, via
3933: 1786:
function requires a three-argument function for its first argument, which the curried
5303: 5153: 5100: 5080: 5032: 5001: 4683: 2630:
accommodates calling typed code from untyped code and vice versa, generating dynamic
2441:-like code, that can allocate memory, dereference pointers, call out to functions in 1822:
layer which the libraries mentioned above build on. It is implemented via the native
2549:
a flexible module system that is used for linking code and for namespace management,
5219: 4752: 4162: 4146: 3870:
Tobin-Hochstadt, S.; St-Amour, V.; Culpepper, R.; Flatt, M.; Felleisen, M. (2011).
2602: 2142: 120: 1853:
The following simple guessing game demonstrates coding with the GUI toolkit. The
5171: 5105: 5072: 5024: 5006: 4757: 4567: 4350: 4237: 4200: 4136: 2626: 1831: 846: 3998: 5047: 4904: 4889: 4688: 4589: 4579: 4439: 4263: 2907: 1803: 1466:(three-dimensional) Gaussians, as concentric, partially transparent surfaces: 973: 4909: 4603: 4419: 4396: 4371: 4291: 4067: 1847: 92: 79:
in Racket. Therefore, the build process uses the conservative collector for
3099:(HtDP), the textbook that several PLT developers have authored, and in the 2545:
languages. This is the result of combining a number of important features:
636:
The following extends the "echo server" example with such a custodian use:
4693: 4678: 4663: 4553: 4548: 4496: 4457: 4170: 3329: 1846:
and others. The Racket API is a class-based toolkit, somewhat related to
460: 1495:;; Returns an R x R x R -> R Gaussian function centered at (cx,cy,cz) 4914: 4835: 4658: 4648: 4633: 4593: 4558: 4501: 4491: 4486: 4381: 2903: 2797: 1823: 5211: 4721: 4618: 4584: 4530: 4519: 4511: 4449: 4345: 4309: 2899: 2582: 2453: 2434: 298: 2558:
a way to specify (and implement) parsers for new language syntaxes.
4801: 4643: 4613: 4525: 4258: 2418: 1843: 1835: 1693:;; Constructs an image value representing the sum of two Gaussians 46:(GUI), and capable of tasks from web server creation to graphics. 3894: 3111:
library for creating pictures in the teaching languages, and the
1137:
The library also includes support for protocols other than http:
4731: 4429: 4301: 2417:
Extension packages also exist on PLaneT, for example to include
1477:;; Visualize a sum of two 3D Gaussians as concentric isosurfaces 1287:
function is defined and called (at the same time) to generate a
985: 271: 4071: 4062: 1839: 1827: 1819: 1807: 1799: 1795: 134:
The following program starts an "echo server" on port 12345.
4036:
Creative Commons Attribution-ShareAlike 3.0 Unported License
980:
language. Each time a connection is made to the server, the
4937:
MIT Computer Science and Artificial Intelligence Laboratory
4034:, which is licensed in a way that permits reuse under the 4030: 2537:
Racket's most notable feature is its ability to build new
285:
function to construct a sequence that walks the tree. The
22:
Racket has been under active development as a vehicle for
4055: 4025: 1426: 211:;; handle an incoming connection in a (green) thread 5210: 5162: 5124: 5071: 4960: 4923: 4882: 4875: 4855: 4817: 4810: 4784: 4773: 4743: 4702: 4510: 4477: 4470: 4448: 4329: 4236: 4227: 4218: 4184: 4105: 1794:
can also write files in Portable Network Graphics (
256:;; and immediately loop back to accept more clients 3897:: Racket's centralized package distribution system 1480:;; Note: this example requires Racket 5.2 or later 1458: 1283:(HtDP) based courses. In the following example, a 4846:Structure and Interpretation of Computer Programs 1615:;; Lifts + to operate on three-argument functions 2437:. The interface allows writing unsafe low-level 115:Racket's system interface includes asynchronous 3328:Racket comes with a full implementation of the 3107:—the "beginning student language". It uses the 3879:Programming Language Design and Implementation 3764:language, so it is a somewhat similar variant, 4083: 1790:supplies. Besides constructing image values, 8: 3999:http://cs.brown.edu/courses/cs173/2012/book/ 3095:knowledge. This approach is heavily used in 1262:"Time to go out and move the car." 999:;; A tiny "hello world" web server 55:Garbage collection, tail calls, space safety 4943:Stanford Artificial Intelligence Laboratory 5244: 4964: 4879: 4814: 4781: 4474: 4233: 4224: 4109: 4090: 4076: 4068: 2208:"Making presentations in Racket" 2145:can also be developed in Racket using the 2125:; show the window to start the application 1148:;; Sending a timed email alert from racket 1857:class implements a top-level window, and 1452: 1451: 1444: 1443: 1436: 1435: 1428: 1427: 1425: 3890: 3888: 3103:project. The following program uses the 123:, synchronization channels, semaphores, 3862: 2646:;; Using higher-order occurrence typing 4042:. All relevant terms must be followed. 3851:; the hash table is used as a function 3797:; sexpr syntax, using mylang semantics 3770:implicitly quote all unknown variables 467:executable. Racket ignores an initial 312:;; Finds Racket sources in all subdirs 4931:Massachusetts Institute of Technology 3592:Finally, the following example is an 2863:;; Print the 1000th Fibonacci number: 459:Both of these programs can be run in 382:;; Report each unique line from stdin 7: 5264: 3908:"Rebuilding Racket's Graphics Layer" 3115:library for interactive animations. 297:tests these paths against the given 3956:Principles of Programming Languages 1826:application programming interface ( 4948:University of California, Berkeley 4792:Scheme Requests for Implementation 3836:; A and B are self-evaluating here 631:Resource management and sandboxing 463:, or on the command line, via the 293:to each path in the sequence, and 14: 4609:Knowledge Engineering Environment 4028:, this article uses content from 3941:Scheme and Functional Programming 3783:file, it can be used as follows: 5284: 5283: 5274: 5273: 5263: 5253: 5243: 1229:"Parking meter alert!" 87:Like all implementations in the 3126:;; Any key inflates the balloon 2524:"play sound.wav wait" 324:; iterate over the current tree 91:family, Racket implements full 59:Racket can use three different 2447:interface description language 1806:and Scalable Vector Graphics ( 1448: 984:function is called to get the 972:The next example implements a 111:System interface and scripting 1: 4718:Common Lisp Interface Manager 3760:provides everything from the 1818:Racket implements a portable 1798:), Portable Document Format ( 473:command-line argument parsing 129:Transmission Control Protocol 67:Originally, the conservative 24:programming language research 18:Racket (programming language) 4117:Automatic storage management 3910:. 2010-12-08. Archived from 3779:If this code is stored in a 2800:. In the following example, 2792:language is a language with 2053:; success => close window 988:to send back to the client. 4366:Game Oriented Assembly Lisp 3971:Dynamic Languages Symposium 1850:which was used originally. 968:Web and network programming 5331: 2585:). Alternatively, use the 2497:"mciSendStringA" 2431:foreign function interface 2425:Foreign function interface 15: 5241: 4967: 4195:Common Lisp Object System 4112: 4099:Lisp programming language 2232:"Some pictures" 1861:implements a button. The 668:;; per-connection handler 33:domain-specific languages 4895:Bolt, Beranek and Newman 4825:Common Lisp the Language 3872:"Languages as Libraries" 3785: 3598: 3572: 3562: 3334: 3117: 2913: 2894:Racket comes with three 2806: 2637: 2607: 2591: 2589:executable on the file. 2467:;; Simple use of the FFI 2458: 2166: 1867: 1777:; labeling adds a legend 1468: 1293: 1139: 1051: 990: 851: 638: 477: 373: 303: 136: 105:just-in-time compilation 44:graphical user interface 2625:variant of Racket. The 1041:"Hello World" 594:"~a:~a: ~a~n" 69:Boehm garbage collector 4830:How to Design Programs 4669:Portable Standard Lisp 4315:Steel Bank Common Lisp 4280:Embeddable Common Lisp 4253:Armed Bear Common Lisp 4132:Higher-order functions 3794:"mylang.rkt" 3584:type-case, and test." 3097:How to Design Programs 2906:implementation; and a 2898:languages: Racklog, a 2796:semantics, similar to 1966:; horizontal container 1876:;; A GUI guessing game 1460: 1281:How to Design Programs 812:custodian-shutdown-all 178:;; create a TCP server 97:live variable analysis 39:for more information. 5139:Shriram Krishnamurthi 4841:Practical Common Lisp 4797:Common Lisp HyperSpec 4321:Symbolics Common Lisp 4297:Macintosh Common Lisp 3934:"The Scribble Reader" 3932:Barzilay, E. (2009). 2370:"darkgreen" 2187:"Slideshow" 1461: 1060:;; Simple web scraper 480:#!/usr/bin/env racket 354:"source file: ~a 29:programming languages 5310:Software development 5043:Robert Tappan Morris 4997:Robert Bruce Findler 4765:Space-cadet keyboard 4176:Tree data structures 4153:Read–eval–print loop 4038:, but not under the 2815:;; An infinite list: 2346:"darkblue" 2149:language, much like 2065:; create all buttons 1424: 920:read-eval-print-loop 840:read–eval–print loop 339:#rx"rkt$ " 4785:Technical standards 4248:Allegro Common Lisp 3596:of a new language: 3559:Plai and plai-typed 2610:#lang scribble/text 2594:#lang scribble/base 2578:different purpose. 2533:Language extensions 2406:"darkred" 1289:Sierpinski triangle 5315:Language workbench 5149:Gerald Jay Sussman 5134:Matthias Felleisen 5086:Richard P. Gabriel 5017:Richard Greenblatt 4992:Matthias Felleisen 4275:Corman Common Lisp 4015:macro-programming. 3682:define-syntax-rule 3652:define-syntax-rule 3588:Creating languages 2902:-like language; a 2760:"hello " 2621:Typed Racket is a 2603:preprocessing text 2429:Racket features a 1456: 1087:let-me-google-that 625:filename extension 61:garbage collectors 5297: 5296: 5237: 5236: 5233: 5232: 5225:Robin Popplestone 5144:Guy L. Steele Jr. 5111:Guy L. Steele Jr. 4956: 4955: 4871: 4870: 4739: 4738: 4629:Lisp Machine Lisp 4539: 4538: 4466: 4465: 4214: 4213: 3180:"solid" 2896:logic programming 2890:Logic programming 2766:"world" 2500:"Winmm" 2433:that is based on 1921:; toplevel window 1244:"EMAIL" 1223:"EMAIL" 1214:send-mail-message 956:close-output-port 710:close-output-port 247:close-output-port 5322: 5287: 5286: 5277: 5276: 5267: 5266: 5257: 5247: 5246: 5091:Philip Greenspun 5063:Richard Stallman 4977:Daniel G. Bobrow 4965: 4880: 4815: 4782: 4704:Operating system 4475: 4234: 4225: 4110: 4092: 4085: 4078: 4069: 4059: 4058: 4056:Official website 4016: 4013: 4008: 4002: 3995: 3989: 3988: 3981: 3975: 3974: 3966: 3960: 3959: 3951: 3945: 3944: 3938: 3929: 3923: 3922: 3920: 3919: 3904: 3898: 3892: 3883: 3882: 3876: 3867: 3852: 3849: 3846: 3843: 3840: 3837: 3834: 3831: 3828: 3825: 3822: 3819: 3816: 3813: 3810: 3807: 3804: 3801: 3798: 3795: 3792: 3789: 3782: 3763: 3752: 3749: 3746: 3743: 3740: 3737: 3734: 3731: 3728: 3725: 3722: 3719: 3716: 3713: 3710: 3707: 3704: 3701: 3698: 3695: 3692: 3689: 3686: 3683: 3680: 3677: 3674: 3671: 3668: 3665: 3662: 3659: 3656: 3653: 3650: 3647: 3644: 3641: 3638: 3635: 3632: 3629: 3626: 3623: 3620: 3617: 3614: 3611: 3608: 3605: 3602: 3579: 3576: 3569: 3566: 3554: 3551: 3548: 3545: 3542: 3539: 3536: 3533: 3530: 3527: 3524: 3521: 3518: 3515: 3512: 3509: 3506: 3503: 3500: 3497: 3494: 3491: 3488: 3485: 3482: 3479: 3476: 3473: 3470: 3467: 3464: 3461: 3458: 3455: 3452: 3449: 3446: 3443: 3440: 3437: 3434: 3431: 3428: 3425: 3422: 3419: 3416: 3413: 3410: 3407: 3404: 3401: 3398: 3395: 3392: 3389: 3386: 3383: 3380: 3377: 3374: 3371: 3368: 3365: 3362: 3359: 3356: 3353: 3350: 3347: 3344: 3341: 3338: 3319: 3316: 3313: 3310: 3307: 3304: 3301: 3298: 3295: 3292: 3289: 3286: 3283: 3280: 3277: 3274: 3271: 3268: 3265: 3262: 3259: 3256: 3253: 3250: 3247: 3244: 3241: 3238: 3235: 3232: 3229: 3226: 3223: 3220: 3217: 3214: 3211: 3208: 3205: 3202: 3199: 3196: 3193: 3190: 3187: 3184: 3181: 3178: 3175: 3172: 3169: 3166: 3163: 3160: 3157: 3154: 3151: 3148: 3145: 3142: 3139: 3136: 3133: 3130: 3127: 3124: 3121: 3114: 3110: 3106: 3085: 3082: 3079: 3076: 3073: 3070: 3067: 3064: 3061: 3058: 3055: 3052: 3049: 3046: 3043: 3040: 3037: 3034: 3031: 3028: 3025: 3022: 3019: 3016: 3013: 3010: 3007: 3004: 3001: 2998: 2995: 2992: 2989: 2986: 2983: 2980: 2977: 2974: 2971: 2968: 2965: 2962: 2959: 2956: 2953: 2950: 2947: 2944: 2941: 2938: 2935: 2932: 2929: 2926: 2923: 2920: 2917: 2885: 2882: 2879: 2876: 2873: 2870: 2867: 2864: 2861: 2858: 2855: 2852: 2849: 2846: 2843: 2840: 2837: 2834: 2831: 2828: 2825: 2822: 2819: 2816: 2813: 2810: 2803: 2791: 2779: 2776: 2773: 2770: 2767: 2764: 2761: 2758: 2755: 2752: 2749: 2746: 2743: 2740: 2737: 2734: 2731: 2728: 2725: 2722: 2719: 2716: 2713: 2710: 2707: 2704: 2701: 2698: 2695: 2692: 2689: 2686: 2683: 2680: 2677: 2674: 2671: 2668: 2665: 2662: 2659: 2656: 2653: 2650: 2647: 2644: 2641: 2623:statically typed 2611: 2595: 2588: 2528: 2525: 2522: 2519: 2516: 2513: 2510: 2507: 2504: 2501: 2498: 2495: 2492: 2489: 2486: 2483: 2480: 2477: 2474: 2471: 2468: 2465: 2462: 2443:shared libraries 2413: 2410: 2407: 2404: 2401: 2398: 2395: 2392: 2389: 2386: 2383: 2380: 2377: 2374: 2371: 2368: 2365: 2362: 2359: 2356: 2353: 2350: 2347: 2344: 2341: 2338: 2335: 2334:filled-rectangle 2332: 2329: 2326: 2323: 2320: 2317: 2314: 2311: 2308: 2305: 2302: 2299: 2296: 2293: 2290: 2287: 2284: 2281: 2278: 2275: 2272: 2269: 2266: 2263: 2260: 2257: 2254: 2251: 2248: 2245: 2242: 2239: 2236: 2233: 2230: 2227: 2224: 2221: 2218: 2215: 2212: 2209: 2206: 2203: 2200: 2197: 2194: 2191: 2188: 2185: 2182: 2179: 2176: 2173: 2170: 2163: 2159: 2148: 2126: 2123: 2120: 2117: 2114: 2111: 2108: 2105: 2102: 2099: 2096: 2093: 2090: 2087: 2084: 2081: 2078: 2075: 2072: 2069: 2066: 2063: 2060: 2057: 2054: 2051: 2048: 2045: 2042: 2039: 2036: 2033: 2030: 2027: 2024: 2021: 2018: 2015: 2012: 2009: 2006: 2003: 2000: 1997: 1994: 1991: 1988: 1985: 1982: 1979: 1976: 1973: 1970: 1967: 1964: 1961: 1960:horizontal-pane% 1958: 1955: 1952: 1949: 1946: 1943: 1940: 1937: 1934: 1931: 1928: 1925: 1922: 1919: 1916: 1913: 1910: 1907: 1904: 1901: 1898: 1895: 1892: 1889: 1886: 1883: 1880: 1877: 1874: 1871: 1864: 1860: 1856: 1793: 1789: 1785: 1778: 1775: 1772: 1769: 1766: 1763: 1760: 1757: 1754: 1751: 1748: 1745: 1742: 1739: 1736: 1733: 1730: 1727: 1724: 1721: 1718: 1715: 1712: 1709: 1706: 1703: 1700: 1697: 1694: 1691: 1688: 1685: 1682: 1679: 1676: 1673: 1670: 1667: 1664: 1661: 1658: 1655: 1652: 1649: 1646: 1643: 1640: 1637: 1634: 1631: 1628: 1625: 1622: 1619: 1616: 1613: 1610: 1607: 1604: 1601: 1598: 1595: 1592: 1589: 1586: 1583: 1580: 1577: 1574: 1571: 1568: 1565: 1562: 1559: 1556: 1553: 1550: 1547: 1544: 1541: 1538: 1535: 1532: 1529: 1526: 1523: 1520: 1517: 1514: 1511: 1508: 1505: 1502: 1499: 1496: 1493: 1490: 1487: 1484: 1481: 1478: 1475: 1472: 1465: 1463: 1462: 1457: 1455: 1447: 1439: 1431: 1419: 1408: 1405: 1402: 1399: 1396: 1393: 1390: 1387: 1384: 1381: 1378: 1375: 1372: 1369: 1366: 1363: 1360: 1357: 1354: 1351: 1348: 1345: 1342: 1339: 1336: 1333: 1330: 1327: 1324: 1321: 1318: 1315: 1312: 1309: 1306: 1303: 1300: 1297: 1286: 1278: 1266: 1263: 1260: 1257: 1254: 1251: 1248: 1245: 1242: 1239: 1236: 1233: 1230: 1227: 1224: 1221: 1218: 1215: 1212: 1209: 1206: 1203: 1200: 1197: 1194: 1191: 1188: 1185: 1182: 1179: 1176: 1173: 1170: 1167: 1164: 1161: 1158: 1155: 1152: 1149: 1146: 1143: 1133: 1130: 1127: 1124: 1121: 1118: 1115: 1112: 1109: 1106: 1103: 1100: 1097: 1094: 1091: 1088: 1085: 1082: 1079: 1076: 1073: 1070: 1067: 1064: 1061: 1058: 1055: 1045: 1042: 1039: 1036: 1033: 1030: 1027: 1024: 1021: 1018: 1015: 1012: 1009: 1006: 1003: 1000: 997: 996:web-server/insta 994: 983: 979: 978:web-server/insta 963: 960: 957: 954: 951: 948: 945: 942: 939: 936: 933: 930: 927: 924: 921: 918: 915: 912: 909: 906: 903: 900: 897: 894: 891: 888: 885: 882: 879: 876: 873: 870: 867: 864: 861: 858: 855: 836: 828: 825: 822: 819: 816: 813: 810: 807: 804: 801: 798: 795: 792: 789: 786: 783: 780: 777: 774: 771: 768: 765: 762: 759: 756: 753: 750: 747: 744: 741: 738: 735: 732: 729: 726: 723: 720: 717: 714: 711: 708: 705: 702: 699: 696: 693: 690: 687: 684: 681: 678: 675: 672: 669: 666: 663: 660: 657: 654: 651: 648: 645: 642: 619: 616: 613: 610: 607: 604: 601: 598: 595: 592: 589: 586: 583: 580: 577: 574: 571: 568: 565: 562: 559: 556: 553: 550: 547: 544: 541: 538: 535: 532: 529: 526: 523: 520: 517: 514: 511: 508: 505: 502: 499: 496: 493: 490: 487: 484: 481: 466: 455: 452: 449: 446: 443: 440: 437: 434: 431: 428: 425: 422: 419: 416: 413: 410: 407: 404: 401: 398: 395: 392: 389: 386: 383: 380: 377: 367: 364: 361: 358: 355: 352: 349: 346: 343: 340: 337: 334: 331: 328: 325: 322: 319: 316: 313: 310: 307: 296: 292: 288: 284: 266: 263: 260: 257: 254: 251: 248: 245: 242: 239: 236: 233: 230: 227: 224: 221: 218: 215: 212: 209: 206: 203: 200: 197: 194: 191: 188: 185: 182: 179: 176: 173: 170: 167: 164: 161: 158: 155: 152: 149: 146: 143: 140: 117:non-blocking I/O 37:the main article 5330: 5329: 5325: 5324: 5323: 5321: 5320: 5319: 5300: 5299: 5298: 5293: 5229: 5206: 5202:Cynthia Solomon 5197:Mitchel Resnick 5158: 5120: 5067: 5021:Timothy P. Hart 4982:William Clinger 4972:Edmund Berkeley 4952: 4919: 4867: 4863:ProgramByDesign 4851: 4806: 4776: 4769: 4735: 4698: 4535: 4506: 4462: 4444: 4325: 4286:GNU Common Lisp 4269:CMU Common Lisp 4239: 4220:Implementations 4210: 4180: 4101: 4096: 4054: 4053: 4050: 4020: 4019: 4011: 4009: 4005: 3996: 3992: 3985:"1 PLAI Scheme" 3983: 3982: 3978: 3968: 3967: 3963: 3953: 3952: 3948: 3936: 3931: 3930: 3926: 3917: 3915: 3906: 3905: 3901: 3893: 3886: 3874: 3869: 3868: 3864: 3859: 3854: 3853: 3850: 3847: 3844: 3841: 3838: 3835: 3832: 3829: 3826: 3823: 3820: 3817: 3814: 3811: 3808: 3805: 3802: 3799: 3796: 3793: 3790: 3787: 3780: 3761: 3756:This language: 3754: 3753: 3750: 3747: 3744: 3741: 3738: 3735: 3732: 3729: 3726: 3723: 3720: 3717: 3714: 3711: 3708: 3705: 3702: 3699: 3696: 3693: 3690: 3687: 3684: 3681: 3678: 3675: 3672: 3669: 3666: 3663: 3660: 3657: 3654: 3651: 3648: 3645: 3642: 3639: 3636: 3633: 3630: 3627: 3624: 3621: 3618: 3615: 3612: 3609: 3606: 3603: 3600: 3590: 3581: 3580: 3577: 3574: 3571: 3570: 3567: 3564: 3561: 3556: 3555: 3552: 3549: 3546: 3543: 3540: 3537: 3534: 3531: 3528: 3525: 3522: 3519: 3516: 3513: 3510: 3507: 3504: 3501: 3498: 3495: 3492: 3489: 3486: 3483: 3480: 3477: 3474: 3471: 3468: 3465: 3462: 3459: 3456: 3453: 3450: 3447: 3444: 3441: 3438: 3435: 3432: 3429: 3426: 3423: 3420: 3417: 3414: 3411: 3408: 3405: 3402: 3399: 3396: 3393: 3390: 3387: 3384: 3381: 3378: 3375: 3372: 3369: 3366: 3363: 3360: 3357: 3354: 3351: 3348: 3345: 3342: 3339: 3336: 3326: 3321: 3320: 3317: 3314: 3311: 3308: 3305: 3302: 3299: 3296: 3293: 3290: 3287: 3284: 3281: 3278: 3275: 3272: 3269: 3266: 3263: 3260: 3257: 3254: 3251: 3248: 3245: 3242: 3239: 3236: 3233: 3230: 3227: 3224: 3221: 3218: 3215: 3212: 3209: 3206: 3203: 3200: 3197: 3194: 3191: 3188: 3185: 3183:"red" 3182: 3179: 3176: 3173: 3170: 3167: 3164: 3161: 3158: 3155: 3152: 3149: 3146: 3143: 3140: 3137: 3134: 3131: 3128: 3125: 3122: 3119: 3112: 3108: 3104: 3101:ProgramByDesign 3092: 3090:Education tools 3087: 3086: 3083: 3080: 3077: 3074: 3071: 3068: 3065: 3062: 3059: 3056: 3053: 3050: 3047: 3044: 3041: 3038: 3035: 3032: 3029: 3026: 3023: 3020: 3017: 3014: 3011: 3008: 3005: 3002: 2999: 2996: 2993: 2990: 2987: 2984: 2981: 2978: 2975: 2972: 2969: 2966: 2963: 2960: 2957: 2954: 2951: 2948: 2945: 2942: 2939: 2936: 2933: 2930: 2927: 2924: 2921: 2918: 2915: 2892: 2887: 2886: 2883: 2880: 2877: 2874: 2871: 2868: 2865: 2862: 2859: 2856: 2853: 2850: 2847: 2844: 2841: 2838: 2835: 2832: 2829: 2826: 2823: 2820: 2817: 2814: 2811: 2808: 2801: 2794:lazy evaluation 2789: 2786: 2781: 2780: 2777: 2774: 2771: 2768: 2765: 2762: 2759: 2756: 2753: 2750: 2747: 2744: 2741: 2738: 2735: 2732: 2729: 2726: 2723: 2720: 2717: 2714: 2711: 2708: 2705: 2702: 2699: 2696: 2693: 2690: 2687: 2684: 2681: 2678: 2675: 2672: 2669: 2666: 2663: 2660: 2657: 2654: 2651: 2648: 2645: 2642: 2639: 2619: 2614: 2613: 2609: 2598: 2597: 2593: 2586: 2575: 2543:general-purpose 2539:domain-specific 2535: 2530: 2529: 2526: 2523: 2521:mci-send-string 2520: 2517: 2514: 2511: 2508: 2505: 2502: 2499: 2496: 2493: 2490: 2488:mci-send-string 2487: 2484: 2481: 2478: 2475: 2472: 2469: 2466: 2463: 2460: 2427: 2415: 2414: 2411: 2408: 2405: 2402: 2399: 2396: 2393: 2390: 2387: 2384: 2381: 2378: 2375: 2372: 2369: 2366: 2363: 2360: 2357: 2354: 2351: 2348: 2345: 2342: 2339: 2336: 2333: 2330: 2327: 2324: 2321: 2318: 2315: 2312: 2309: 2306: 2303: 2300: 2297: 2294: 2291: 2288: 2285: 2282: 2279: 2276: 2273: 2270: 2267: 2264: 2261: 2258: 2255: 2252: 2249: 2246: 2243: 2240: 2237: 2234: 2231: 2228: 2225: 2222: 2219: 2216: 2213: 2210: 2207: 2204: 2201: 2198: 2195: 2192: 2189: 2186: 2183: 2180: 2177: 2174: 2171: 2168: 2161: 2157: 2146: 2136: 2128: 2127: 2124: 2121: 2118: 2115: 2112: 2109: 2106: 2103: 2100: 2097: 2094: 2091: 2088: 2085: 2082: 2079: 2076: 2073: 2070: 2067: 2064: 2061: 2058: 2055: 2052: 2049: 2046: 2043: 2040: 2037: 2034: 2031: 2028: 2025: 2022: 2019: 2016: 2013: 2010: 2007: 2004: 2001: 1998: 1995: 1992: 1989: 1986: 1983: 1980: 1977: 1974: 1971: 1968: 1965: 1962: 1959: 1956: 1953: 1950: 1947: 1944: 1941: 1938: 1935: 1932: 1929: 1926: 1923: 1920: 1917: 1914: 1911: 1908: 1905: 1902: 1899: 1896: 1893: 1890: 1887: 1884: 1881: 1878: 1875: 1872: 1869: 1862: 1858: 1854: 1816: 1814:GUI programming 1791: 1787: 1783: 1780: 1779: 1776: 1773: 1770: 1767: 1764: 1761: 1758: 1755: 1752: 1749: 1746: 1743: 1740: 1737: 1734: 1731: 1728: 1725: 1722: 1719: 1716: 1713: 1710: 1707: 1704: 1701: 1698: 1695: 1692: 1689: 1686: 1683: 1680: 1677: 1674: 1671: 1668: 1665: 1662: 1659: 1656: 1653: 1650: 1647: 1644: 1641: 1638: 1635: 1632: 1629: 1626: 1623: 1620: 1617: 1614: 1611: 1608: 1605: 1602: 1599: 1596: 1593: 1590: 1587: 1584: 1581: 1578: 1575: 1572: 1569: 1566: 1563: 1560: 1557: 1554: 1551: 1548: 1545: 1542: 1539: 1536: 1533: 1530: 1527: 1524: 1521: 1518: 1515: 1512: 1509: 1506: 1503: 1500: 1497: 1494: 1491: 1488: 1485: 1482: 1479: 1476: 1473: 1470: 1422: 1421: 1417: 1410: 1409: 1406: 1403: 1400: 1397: 1394: 1391: 1388: 1385: 1382: 1379: 1376: 1373: 1370: 1367: 1364: 1361: 1358: 1355: 1352: 1349: 1346: 1343: 1340: 1337: 1334: 1331: 1328: 1325: 1322: 1319: 1316: 1313: 1310: 1307: 1304: 1301: 1298: 1295: 1284: 1276: 1273: 1268: 1267: 1264: 1261: 1258: 1255: 1252: 1249: 1246: 1243: 1240: 1237: 1234: 1231: 1228: 1225: 1222: 1219: 1216: 1213: 1210: 1207: 1204: 1201: 1198: 1195: 1192: 1189: 1186: 1183: 1180: 1177: 1174: 1171: 1168: 1165: 1162: 1159: 1156: 1153: 1150: 1147: 1144: 1141: 1135: 1134: 1131: 1128: 1125: 1122: 1119: 1116: 1113: 1110: 1107: 1104: 1101: 1098: 1095: 1092: 1089: 1086: 1083: 1080: 1077: 1074: 1071: 1068: 1065: 1062: 1059: 1056: 1053: 1047: 1046: 1043: 1040: 1037: 1034: 1031: 1028: 1025: 1022: 1019: 1016: 1013: 1010: 1007: 1004: 1001: 998: 995: 992: 981: 977: 970: 965: 964: 961: 958: 955: 952: 949: 946: 943: 940: 937: 934: 931: 928: 925: 922: 919: 916: 913: 910: 907: 904: 901: 898: 895: 892: 889: 886: 883: 880: 877: 874: 871: 868: 865: 862: 859: 856: 853: 834: 830: 829: 826: 823: 820: 817: 814: 811: 808: 805: 802: 799: 796: 793: 790: 787: 784: 781: 778: 775: 772: 769: 766: 763: 760: 757: 754: 751: 748: 745: 742: 739: 736: 733: 730: 727: 724: 721: 718: 715: 712: 709: 706: 703: 700: 697: 694: 691: 688: 685: 682: 679: 676: 673: 670: 667: 664: 661: 658: 655: 652: 649: 646: 643: 640: 633: 621: 620: 617: 614: 611: 608: 605: 602: 599: 596: 593: 590: 587: 584: 581: 578: 575: 572: 569: 566: 563: 560: 557: 554: 551: 548: 545: 542: 539: 536: 533: 530: 527: 524: 521: 518: 515: 512: 509: 506: 503: 500: 497: 494: 491: 488: 485: 482: 479: 464: 457: 456: 453: 450: 447: 444: 441: 438: 435: 432: 429: 426: 423: 420: 417: 414: 411: 408: 405: 402: 399: 396: 393: 390: 387: 384: 381: 378: 375: 369: 368: 365: 362: 359: 356: 353: 350: 347: 344: 341: 338: 335: 332: 329: 326: 323: 320: 317: 314: 311: 308: 305: 294: 290: 286: 282: 268: 267: 264: 261: 258: 255: 252: 249: 246: 243: 240: 237: 234: 231: 228: 225: 222: 219: 216: 213: 210: 207: 204: 201: 198: 195: 192: 189: 186: 183: 180: 177: 174: 171: 168: 165: 162: 159: 156: 153: 150: 147: 144: 141: 138: 131:(TCP) sockets. 113: 57: 52: 50:Runtime support 20: 12: 11: 5: 5328: 5326: 5318: 5317: 5312: 5302: 5301: 5295: 5294: 5242: 5239: 5238: 5235: 5234: 5231: 5230: 5228: 5227: 5222: 5216: 5214: 5208: 5207: 5205: 5204: 5199: 5194: 5192:Seymour Papert 5189: 5184: 5182:Wally Feurzeig 5179: 5177:Denison Bollay 5174: 5168: 5166: 5160: 5159: 5157: 5156: 5151: 5146: 5141: 5136: 5130: 5128: 5122: 5121: 5119: 5118: 5116:Daniel Weinreb 5113: 5108: 5103: 5098: 5088: 5083: 5077: 5075: 5069: 5068: 5066: 5065: 5060: 5055: 5050: 5045: 5040: 5035: 5030: 5027: 5022: 5019: 5014: 5009: 5004: 4999: 4994: 4989: 4987:R. Kent Dybvig 4984: 4979: 4974: 4968: 4962: 4958: 4957: 4954: 4953: 4951: 4950: 4945: 4940: 4934: 4927: 4925: 4921: 4920: 4918: 4917: 4912: 4907: 4902: 4897: 4892: 4890:Apple Computer 4886: 4884: 4877: 4873: 4872: 4869: 4868: 4866: 4865: 4859: 4857: 4853: 4852: 4850: 4849: 4843: 4838: 4833: 4827: 4821: 4819: 4812: 4808: 4807: 4805: 4804: 4799: 4794: 4788: 4786: 4779: 4771: 4770: 4768: 4767: 4762: 4761: 4760: 4749: 4747: 4741: 4740: 4737: 4736: 4734: 4729: 4724: 4715: 4708: 4706: 4700: 4699: 4697: 4696: 4691: 4686: 4681: 4676: 4671: 4666: 4661: 4656: 4651: 4646: 4641: 4636: 4631: 4626: 4621: 4616: 4611: 4606: 4601: 4596: 4587: 4582: 4577: 4561: 4556: 4551: 4546: 4540: 4537: 4536: 4534: 4533: 4528: 4523: 4516: 4514: 4508: 4507: 4505: 4504: 4499: 4494: 4489: 4483: 4481: 4472: 4471:Unstandardized 4468: 4467: 4464: 4463: 4461: 4460: 4454: 4452: 4446: 4445: 4443: 4442: 4437: 4432: 4427: 4422: 4417: 4407: 4404: 4399: 4394: 4392:MIT/GNU Scheme 4389: 4384: 4379: 4374: 4369: 4363: 4358: 4353: 4348: 4343: 4335: 4333: 4327: 4326: 4324: 4323: 4318: 4312: 4307: 4304: 4299: 4294: 4289: 4283: 4277: 4272: 4266: 4261: 4256: 4250: 4244: 4242: 4231: 4222: 4216: 4215: 4212: 4211: 4209: 4208: 4203: 4198: 4191: 4189: 4182: 4181: 4179: 4178: 4173: 4165: 4160: 4155: 4150: 4144: 4139: 4134: 4129: 4127:Dynamic typing 4124: 4119: 4113: 4107: 4103: 4102: 4097: 4095: 4094: 4087: 4080: 4072: 4066: 4065: 4060: 4049: 4048:External links 4046: 4045: 4044: 4018: 4017: 4003: 3990: 3976: 3961: 3946: 3924: 3899: 3884: 3861: 3860: 3858: 3855: 3786: 3777: 3776: 3775: 3774: 3771: 3765: 3599: 3594:implementation 3589: 3586: 3573: 3563: 3560: 3557: 3335: 3325: 3322: 3147:2htdp/universe 3118: 3113:2htdp/universe 3091: 3088: 2914: 2891: 2888: 2807: 2785: 2782: 2638: 2618: 2615: 2608: 2592: 2574: 2571: 2560: 2559: 2556: 2553: 2550: 2534: 2531: 2459: 2426: 2423: 2167: 2135: 2132: 2083:"~a" 1868: 1815: 1812: 1469: 1454: 1450: 1446: 1442: 1438: 1434: 1430: 1294: 1272: 1269: 1140: 1126:string->url 1052: 1023:response/xexpr 991: 969: 966: 884:make-evaluator 866:racket/sandbox 852: 835:racket/sandbox 639: 632: 629: 543:"$ " 478: 374: 304: 137: 112: 109: 101:lambda lifting 85: 84: 76: 73: 56: 53: 51: 48: 16:Main article: 13: 10: 9: 6: 4: 3: 2: 5327: 5316: 5313: 5311: 5308: 5307: 5305: 5292: 5291: 5282: 5281: 5272: 5271: 5262: 5261: 5256: 5252: 5251: 5240: 5226: 5223: 5221: 5218: 5217: 5215: 5213: 5209: 5203: 5200: 5198: 5195: 5193: 5190: 5188: 5185: 5183: 5180: 5178: 5175: 5173: 5170: 5169: 5167: 5165: 5161: 5155: 5154:Julie Sussman 5152: 5150: 5147: 5145: 5142: 5140: 5137: 5135: 5132: 5131: 5129: 5127: 5123: 5117: 5114: 5112: 5109: 5107: 5104: 5102: 5101:David A. Moon 5099: 5096: 5092: 5089: 5087: 5084: 5082: 5081:Scott Fahlman 5079: 5078: 5076: 5074: 5070: 5064: 5061: 5059: 5058:Steve Russell 5056: 5054: 5051: 5049: 5046: 5044: 5041: 5039: 5038:John McCarthy 5036: 5034: 5033:David Luckham 5031: 5028: 5026: 5023: 5020: 5018: 5015: 5013: 5010: 5008: 5005: 5003: 5002:Matthew Flatt 5000: 4998: 4995: 4993: 4990: 4988: 4985: 4983: 4980: 4978: 4975: 4973: 4970: 4969: 4966: 4963: 4959: 4949: 4946: 4944: 4941: 4938: 4935: 4932: 4929: 4928: 4926: 4922: 4916: 4913: 4911: 4908: 4906: 4903: 4901: 4898: 4896: 4893: 4891: 4888: 4887: 4885: 4881: 4878: 4876:Organizations 4874: 4864: 4861: 4860: 4858: 4854: 4847: 4844: 4842: 4839: 4837: 4834: 4831: 4828: 4826: 4823: 4822: 4820: 4816: 4813: 4809: 4803: 4800: 4798: 4795: 4793: 4790: 4789: 4787: 4783: 4780: 4778: 4772: 4766: 4763: 4759: 4756: 4755: 4754: 4751: 4750: 4748: 4746: 4742: 4733: 4730: 4728: 4725: 4723: 4719: 4716: 4714: 4713: 4709: 4707: 4705: 4701: 4695: 4692: 4690: 4687: 4685: 4682: 4680: 4677: 4675: 4672: 4670: 4667: 4665: 4662: 4660: 4657: 4655: 4652: 4650: 4647: 4645: 4642: 4640: 4637: 4635: 4632: 4630: 4627: 4625: 4622: 4620: 4617: 4615: 4612: 4610: 4607: 4605: 4602: 4600: 4597: 4595: 4591: 4588: 4586: 4583: 4581: 4578: 4575: 4574: 4569: 4565: 4562: 4560: 4557: 4555: 4552: 4550: 4547: 4545: 4542: 4541: 4532: 4529: 4527: 4524: 4521: 4518: 4517: 4515: 4513: 4509: 4503: 4500: 4498: 4495: 4493: 4490: 4488: 4485: 4484: 4482: 4480: 4476: 4473: 4469: 4459: 4456: 4455: 4453: 4451: 4447: 4441: 4438: 4436: 4433: 4431: 4428: 4426: 4423: 4421: 4418: 4415: 4411: 4408: 4406:Pocket Scheme 4405: 4403: 4400: 4398: 4395: 4393: 4390: 4388: 4385: 4383: 4380: 4378: 4375: 4373: 4370: 4367: 4364: 4362: 4359: 4357: 4354: 4352: 4349: 4347: 4344: 4342: 4341: 4337: 4336: 4334: 4332: 4328: 4322: 4319: 4316: 4313: 4311: 4308: 4305: 4303: 4300: 4298: 4295: 4293: 4290: 4287: 4284: 4281: 4278: 4276: 4273: 4270: 4267: 4265: 4262: 4260: 4257: 4254: 4251: 4249: 4246: 4245: 4243: 4241: 4235: 4232: 4230: 4226: 4223: 4221: 4217: 4207: 4204: 4202: 4199: 4196: 4193: 4192: 4190: 4187: 4183: 4177: 4174: 4172: 4169: 4166: 4164: 4163:S-expressions 4161: 4159: 4156: 4154: 4151: 4148: 4147:M-expressions 4145: 4143: 4140: 4138: 4135: 4133: 4130: 4128: 4125: 4123: 4120: 4118: 4115: 4114: 4111: 4108: 4104: 4100: 4093: 4088: 4086: 4081: 4079: 4074: 4073: 4070: 4064: 4061: 4057: 4052: 4051: 4047: 4043: 4041: 4037: 4032: 4029: 4027: 4022: 4021: 4007: 4004: 4000: 3994: 3991: 3986: 3980: 3977: 3972: 3965: 3962: 3957: 3950: 3947: 3942: 3935: 3928: 3925: 3914:on 2013-02-02 3913: 3909: 3903: 3900: 3896: 3891: 3889: 3885: 3880: 3873: 3866: 3863: 3856: 3784: 3772: 3769: 3768: 3766: 3759: 3758: 3757: 3597: 3595: 3587: 3585: 3558: 3333: 3331: 3323: 3116: 3102: 3098: 3089: 2912: 2909: 2905: 2901: 2897: 2889: 2805: 2799: 2795: 2783: 2727:string-append 2636: 2633: 2628: 2624: 2616: 2606: 2604: 2590: 2584: 2579: 2572: 2570: 2567: 2563: 2557: 2554: 2551: 2548: 2547: 2546: 2544: 2540: 2532: 2457: 2455: 2450: 2448: 2444: 2440: 2436: 2432: 2424: 2422: 2420: 2165: 2154: 2152: 2144: 2143:presentations 2140: 2133: 2131: 2002:"." 1866: 1851: 1849: 1845: 1841: 1837: 1833: 1829: 1825: 1821: 1813: 1811: 1809: 1805: 1801: 1797: 1784:isosurfaces3d 1771:"g" 1705:isosurfaces3d 1467: 1440: 1432: 1414: 1292: 1290: 1282: 1270: 1208:; wait 3h 45m 1138: 1120:get-pure-port 1111:regexp-match* 1072:net/uri-codec 1050: 989: 987: 975: 967: 850: 848: 843: 842:(REPL) server 841: 734:define-values 637: 630: 628: 626: 567:regexp-match? 534:string-append 528:regexp-match? 476: 474: 470: 462: 372: 336:regexp-match? 302: 300: 295:regexp-match? 279: 277: 273: 184:define-values 135: 132: 130: 126: 125:sub-processes 122: 121:green threads 118: 110: 108: 106: 102: 98: 94: 90: 82: 81:bootstrapping 77: 74: 70: 66: 65: 64: 62: 54: 49: 47: 45: 40: 38: 34: 30: 25: 19: 5288: 5278: 5268: 5258: 5248: 5220:Rod Burstall 5187:Brian Harvey 4753:Lisp machine 4710: 4571: 4413: 4338: 4229:Standardized 4168:Self-hosting 4149:(deprecated) 4137:Linked lists 4122:Conditionals 4033: 4023: 4006: 3993: 3979: 3970: 3964: 3955: 3949: 3940: 3927: 3916:. Retrieved 3912:the original 3902: 3878: 3865: 3778: 3755: 3622:all-from-out 3593: 3591: 3582: 3327: 3093: 2893: 2787: 2643:typed/racket 2620: 2617:Typed Racket 2599: 2580: 2576: 2568: 2564: 2561: 2536: 2451: 2428: 2416: 2155: 2137: 2129: 1852: 1817: 1781: 1415: 1411: 1302:;; A picture 1291:of depth 8. 1274: 1157:net/sendmail 1136: 1048: 971: 908:parameterize 838: 831: 788:parameterize 634: 622: 537:"" 492:command-line 458: 370: 283:in-directory 280: 269: 133: 114: 86: 58: 41: 21: 5172:Hal Abelson 5106:Kent Pitman 5073:Common Lisp 5025:Louis Hodes 5012:Paul Graham 5007:Phyllis Fox 4777:of practice 4758:TI Explorer 4351:Chez Scheme 4201:CommonLoops 4063:docs.racket 3812:make-hasheq 3332:language. 3135:2htdp/image 3109:2htdp/image 2784:Lazy Racket 2652:define-type 2627:type system 2494:get-ffi-obj 2464:racket/base 2379:scale+color 2355:scale+color 2328:scale+color 2262:scale+color 2071:make-object 1999:message-box 1810:) formats. 1311:2htdp/image 1277:2htdp/image 890:racket/base 847:file system 824:echo-server 725:echo-server 289:form binds 262:echo-server 172:echo-server 5304:Categories 5053:David Park 5048:Joel Moses 5029:Mike Levin 4905:Lucid Inc. 4856:Curriculum 4689:Spice Lisp 4590:Franz Lisp 4580:Emacs Lisp 4440:TinyScheme 4264:Clozure CL 4010:Note that 3918:2013-07-07 3857:References 3781:mylang.rkt 3643:rename-out 3616:except-out 3578:plai-typed 2908:miniKanren 2688:Str-or-Num 2655:Str-or-Num 2476:ffi/unsafe 2421:elements. 2098:make-check 1978:make-check 1873:racket/gui 1838:, and via 1804:PostScript 1782:Here, the 1323:sierpinski 1285:sierpinski 976:using the 974:web server 899:let-values 752:tcp-accept 659:tcp-listen 202:tcp-accept 157:tcp-listen 5095:10th rule 4924:Education 4910:Symbolics 4900:Harlequin 4811:Education 4775:Community 4604:Interlisp 4420:Scheme 48 4397:MultiLisp 4372:GNU Guile 4292:LispWorks 4158:Recursion 4026:this edit 3821:hash-set! 3352:procedure 2632:contracts 2322:hc-append 2241:vc-append 2172:slideshow 2162:hc-append 2158:vc-append 2147:slideshow 2134:Slideshow 1848:wxWidgets 1449:→ 1441:× 1433:× 695:copy-port 442:hash-set! 430:displayln 301:pattern. 232:copy-port 93:tail call 5290:Category 5280:Category 4883:Business 4745:Hardware 4694:Zetalisp 4679:S-1 Lisp 4664:Picolisp 4554:BBN LISP 4549:AutoLISP 4497:StarLogo 4458:OpenLisp 4414:features 4171:compiler 4106:Features 4031:"Racket" 3724:hash-ref 3508:printnln 3330:ALGOL 60 3273:big-bang 3123:htdp/bsl 3105:htdp/bsl 3066:ancestor 3012:ancestor 2961:ancestor 2922:ancestor 2875:list-ref 2587:scribble 2573:Scribble 2277:colorize 2247:for/list 1939:message% 1735:gaussian 1717:gaussian 1507:gaussian 1350:triangle 1271:Graphics 755:listener 653:listener 501:base-dir 461:DrRacket 412:hash-ref 205:listener 151:listener 5270:Commons 4939:(CSAIL) 4915:Xanalys 4836:On Lisp 4659:PC-LISP 4649:newLISP 4634:Maclisp 4594:PC-LISP 4573:history 4559:Clojure 4522:(POP-1) 4502:UCBLogo 4492:NetLogo 4487:MSWLogo 4382:JScheme 4356:Chicken 4340:History 4271:(CMUCL) 4206:Flavors 4188:systems 3610:provide 3499:integer 3415:integer 3391:integer 3349:integer 3343:algol60 3309:balloon 3306:to-draw 3297:deflate 3294:on-tick 3285:blow-up 3234:deflate 3198:blow-up 3162:balloon 3144:require 3132:require 3042:douglas 2919:datalog 2904:Datalog 2798:Haskell 2736:string? 2509:_string 2473:require 2229:#:title 2141:-based 2074:button% 1859:button% 1830:), via 1824:Windows 1768:#:label 1486:require 1308:require 1154:require 1069:net/url 1066:require 1014:request 929:fprintf 863:require 797:handler 680:handler 573:pregexp 469:shebang 31:, both 5126:Scheme 4961:People 4848:(SICP) 4832:(HTDP) 4727:Genera 4722:McCLIM 4619:LeLisp 4585:EuLisp 4531:POP-11 4520:COWSEL 4450:ISLISP 4410:Racket 4377:Ikarus 4368:(GOAL) 4361:Gambit 4346:Bigloo 4331:Scheme 4317:(SBCL) 4310:Poplog 4306:Movitz 4255:(ABCL) 4238:Common 4197:(CLOS) 4186:Object 4142:Macros 4024:As of 3895:PLaneT 3803:define 3788:#lang 3762:racket 3625:racket 3604:racket 3601:#lang 3575:#lang 3565:#lang 3282:on-key 3228:define 3192:define 3174:circle 3156:define 3120:#lang 3048:parent 3030:parent 2982:parent 2943:parent 2900:Prolog 2821:define 2809:#lang 2733:filter 2706:define 2697:String 2685:Listof 2667:Number 2664:String 2640:#lang 2583:pdfTeX 2485:define 2461:#lang 2454:OpenGL 2435:libffi 2256:define 2169:#lang 2151:Beamer 2080:format 2029:secret 1972:define 1948:define 1927:define 1915:frame% 1903:define 1891:random 1885:secret 1882:define 1870:#lang 1855:frame% 1699:plot3d 1621:define 1612:)))))) 1501:define 1474:racket 1471:#lang 1407:)))))) 1398:beside 1383:freeze 1299:racket 1296:#lang 1241:getenv 1220:getenv 1145:racket 1142:#lang 1081:define 1057:racket 1054:#lang 1005:define 993:#lang 947:" 941:Bye... 935:" 875:define 857:racket 854:#lang 764:thread 674:define 650:define 644:racket 641:#lang 591:printf 522:#:when 495:#:args 486:racket 483:#lang 465:racket 406:unless 379:racket 376:#lang 360:" 351:printf 309:racket 306:#lang 299:regexp 276:Python 217:thread 148:define 142:racket 139:#lang 127:, and 89:Scheme 5260:Books 4933:(MIT) 4818:Books 4802:X3J13 4684:SKILL 4644:MLisp 4614:*Lisp 4568:Apple 4564:Dylan 4526:POP-2 4288:(GCL) 4282:(ECL) 4259:CLISP 4012:#%app 4001:>. 3937:(PDF) 3875:(PDF) 3791:s-exp 3712:hash? 3670:' 3634:#%app 3631:#%top 3514:SIGMA 3481:SIGMA 3454:until 3412:begin 3382:value 3355:SIGMA 3346:begin 3324:ALGOL 2916:#lang 2869:print 2830:list* 2724:apply 2694:-> 2512:-> 2419:LaTeX 2385:arrow 2283:scale 2238:apply 2226:slide 2214:roman 2211:' 2193:roman 2190:' 2178:slide 2139:Slide 1863:check 1844:Linux 1842:+ on 1836:macOS 1832:Cocoa 1389:above 1362:' 1359:solid 1356:' 1338:zero? 1256:' 1166:sleep 1132:))))) 1026:' 1011:start 982:start 887:' 818:))))) 662:12345 160:12345 5250:List 5164:Logo 4732:Scsh 4712:List 4479:Logo 4430:SIOD 4402:Pico 4387:Kawa 4302:Mocl 4240:Lisp 4040:GFDL 3568:plai 3448:step 3340:lang 3060:john 3036:john 2881:1000 2878:fibs 2860:)))) 2857:fibs 2848:fibs 2824:fibs 2812:lazy 2802:fibs 2790:lazy 2788:The 2772:sqrt 2754:list 2541:and 2506:_fun 2412:)))) 2361:disk 2298:add1 2205:text 2184:text 2160:and 2116:show 2110:send 2044:show 2038:send 2017:when 2008:cond 1792:plot 1756:-2.5 1741:-1.5 1489:plot 1418:plot 1416:The 1253:null 1250:null 1235:list 1099:let* 1044:)))) 1038:body 1032:html 986:HTML 618:)))) 615:line 582:line 561:when 448:line 433:line 418:line 363:path 342:path 330:when 291:path 272:Perl 103:and 5212:POP 4674:RPL 4654:NIL 4639:MDL 4624:LFE 4544:Arc 4512:POP 4425:SCM 3751:))) 3688:app 3658:top 3553:end 3493:end 3487:sum 3469:sum 3463:sum 3436:for 3424:sum 3418:sum 3315:200 3312:200 3246:max 3054:bob 2854:cdr 2842:map 2778:))) 2763:1/2 2748:tog 2742:))) 2712:tog 2679:tog 2515:))) 2388:100 2364:100 2337:100 2104:))) 2059:for 2050:))) 1990:evt 1987:btn 1957:new 1936:new 1912:new 1840:GTK 1834:on 1828:API 1820:GUI 1808:SVG 1802:), 1800:PDF 1796:PNG 1788:f3+ 1753:2.5 1738:1.5 1711:f3+ 1690:))) 1627:f3+ 1597:sqr 1576:sqr 1555:sqr 1537:exp 1374:let 1365:red 1320:let 1090:str 962:))) 803:out 779:let 743:out 722:let 713:out 701:out 686:out 606:num 540:ext 516:for 504:ext 454:))) 445:saw 415:saw 397:for 388:let 366:))) 318:for 287:for 274:or 253:))) 250:out 238:out 193:out 169:let 5306:: 4720:, 4599:Hy 4592:, 4570:, 3939:. 3887:^ 3877:. 3815:)) 3748:xs 3733:xs 3706:if 3697:xs 3646:)) 3547:)) 3484::= 3466::= 3460:do 3442::= 3427::= 3318:)) 3276:50 3267:)) 3222:)) 3186:)) 3063:). 3045:). 3027:). 2997:), 2979::- 2958:). 2940::- 2884:)) 2775:-1 2700:)) 2682:(( 2670:)) 2403:)) 2397:pi 2340:50 2316:)) 2310:)) 2250:() 2220:)) 2217:40 2196:56 2119:#t 2062:() 2047:#f 2011:)) 1975:(( 1963:)) 1942:)) 1918:)) 1897:)) 1774:)) 1762:-1 1750:-1 1747:)) 1624:(( 1609:cz 1591:)) 1588:cy 1570:)) 1567:cx 1516:cz 1513:cy 1510:cx 1504:(( 1377:() 1332:if 1326:() 1265:)) 1247:)) 1205:)) 1202:60 1196:15 1187:60 1114:rx 944:\n 938:\n 902:() 893:)) 827:)) 800:in 791:() 782:() 773:() 758:)) 740:in 728:() 716:)) 698:in 683:in 665:)) 576:re 507:re 475:: 451:#t 436:)) 421:#f 400:() 391:() 357:\n 321:() 278:. 265:)) 235:in 226:() 208:)) 190:in 175:() 163:)) 119:, 107:. 63:: 5097:) 5093:( 4576:) 4566:( 4435:T 4416:) 4412:( 4091:e 4084:t 4077:v 3987:. 3973:. 3958:. 3943:. 3921:. 3881:. 3848:) 3845:A 3842:h 3839:( 3833:) 3830:B 3827:A 3824:h 3818:( 3809:( 3806:h 3800:( 3745:. 3742:f 3739:( 3736:) 3730:. 3727:f 3721:( 3718:) 3715:f 3709:( 3703:( 3700:) 3694:. 3691:f 3685:( 3679:( 3676:) 3673:x 3667:) 3664:x 3661:. 3655:( 3649:( 3640:( 3637:) 3628:) 3619:( 3613:( 3607:( 3550:; 3544:7 3541:, 3538:q 3535:, 3532:1 3529:- 3526:2 3523:* 3520:q 3517:( 3511:( 3505:; 3502:q 3496:; 3490:; 3478:; 3475:x 3472:+ 3457:n 3451:1 3445:1 3439:i 3433:; 3430:0 3421:; 3409:; 3406:n 3403:, 3400:i 3397:, 3394:x 3388:; 3385:n 3379:; 3376:) 3373:n 3370:, 3367:i 3364:, 3361:x 3358:( 3337:# 3303:( 3300:) 3291:( 3288:) 3279:( 3270:( 3264:1 3261:) 3258:1 3255:b 3252:- 3249:( 3243:( 3240:) 3237:b 3231:( 3225:( 3219:5 3216:b 3213:+ 3210:( 3207:) 3204:k 3201:b 3195:( 3189:( 3177:b 3171:( 3168:) 3165:b 3159:( 3153:( 3150:) 3141:( 3138:) 3129:( 3084:? 3081:) 3078:B 3075:, 3072:A 3069:( 3057:, 3051:( 3039:, 3033:( 3024:B 3021:, 3018:D 3015:( 3009:, 3006:C 3003:= 3000:D 2994:C 2991:, 2988:A 2985:( 2976:) 2973:B 2970:, 2967:A 2964:( 2955:B 2952:, 2949:A 2946:( 2937:) 2934:B 2931:, 2928:A 2925:( 2872:( 2866:( 2851:( 2845:+ 2839:( 2836:1 2833:1 2827:( 2818:( 2769:( 2757:5 2751:( 2745:( 2739:l 2730:( 2721:( 2718:) 2715:l 2709:( 2703:( 2691:) 2676:: 2673:( 2661:U 2658:( 2649:( 2527:) 2518:( 2503:( 2491:( 2482:( 2479:) 2470:( 2439:C 2409:) 2400:6 2394:/ 2391:( 2382:( 2376:( 2373:) 2367:) 2358:( 2352:( 2349:) 2343:) 2331:( 2325:( 2319:( 2313:c 2307:5 2304:) 2301:i 2295:( 2292:/ 2289:( 2286:p 2280:( 2274:( 2271:) 2268:c 2265:p 2259:( 2253:( 2244:( 2235:( 2223:( 2202:( 2199:) 2181:( 2175:( 2122:) 2113:f 2107:( 2101:i 2095:( 2092:p 2089:) 2086:i 2077:( 2068:( 2056:( 2041:f 2035:( 2032:) 2026:i 2023:= 2020:( 2014:( 2005:( 1996:( 1993:) 1984:) 1981:i 1969:( 1954:( 1951:p 1945:( 1933:( 1930:t 1924:( 1909:( 1906:f 1900:( 1894:5 1888:( 1879:( 1765:1 1759:1 1744:0 1732:( 1729:) 1726:0 1723:0 1720:0 1714:( 1708:( 1702:( 1696:( 1687:z 1684:y 1681:x 1678:h 1675:( 1672:) 1669:z 1666:y 1663:x 1660:g 1657:( 1654:+ 1651:( 1648:) 1645:z 1642:y 1639:x 1636:) 1633:h 1630:g 1618:( 1606:z 1603:- 1600:( 1594:( 1585:y 1582:- 1579:( 1573:( 1564:x 1561:- 1558:( 1552:( 1549:+ 1546:( 1543:- 1540:( 1534:( 1531:) 1528:z 1525:y 1522:x 1519:) 1498:( 1492:) 1483:( 1453:R 1445:R 1437:R 1429:R 1404:t 1401:t 1395:( 1392:t 1386:( 1380:( 1371:( 1368:) 1353:2 1347:( 1344:) 1341:n 1335:( 1329:( 1317:( 1314:) 1305:( 1259:( 1238:( 1232:( 1226:) 1217:( 1211:( 1199:) 1193:) 1190:4 1184:* 1181:( 1178:- 1175:( 1172:* 1169:( 1163:( 1160:) 1151:( 1129:u 1123:( 1117:( 1108:( 1105:) 1102:( 1096:( 1093:) 1084:( 1078:( 1075:) 1063:( 1035:( 1029:( 1020:( 1017:) 1008:( 1002:( 959:o 953:( 950:) 932:o 926:( 923:) 917:( 914:) 911:( 905:( 896:( 881:( 878:e 872:( 869:) 860:( 821:( 815:c 809:( 806:) 794:( 785:( 776:( 770:λ 767:( 761:( 749:( 746:) 737:( 731:( 719:( 707:( 704:) 692:( 689:) 677:( 671:( 656:( 647:( 612:) 609:1 603:+ 600:( 597:p 588:( 585:) 579:) 570:( 564:( 558:( 555:) 552:) 549:p 546:) 531:( 525:( 519:( 513:( 510:) 498:( 489:( 439:( 427:( 424:) 409:( 403:( 394:( 385:( 348:( 345:) 333:( 327:( 315:( 259:( 244:( 241:) 229:( 223:λ 220:( 214:( 199:( 196:) 187:( 181:( 166:( 154:( 145:( 83:.

Index

Racket (programming language)
programming language research
programming languages
domain-specific languages
the main article
graphical user interface
garbage collectors
Boehm garbage collector
bootstrapping
Scheme
tail call
live variable analysis
lambda lifting
just-in-time compilation
non-blocking I/O
green threads
sub-processes
Transmission Control Protocol
Perl
Python
regexp
DrRacket
shebang
command-line argument parsing
filename extension
read–eval–print loop
file system
web server
HTML
How to Design Programs

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.

↑