From b062c52067bb92288fd4b5023a331a66b84a2c2e Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Thu, 5 Jun 2008 18:56:41 +0000 Subject: [PATCH] fix some doc links svn: r10154 --- .../drscheme/interface-essentials.scrbl | 2 +- collects/scribblings/reference/sandbox.scrbl | 4 +- collects/setup/scribble.ss | 2 +- collects/swindle/info.ss | 2 + collects/swindle/swindle.scrbl | 146 ++++++++++++++++++ 5 files changed, 152 insertions(+), 4 deletions(-) create mode 100644 collects/swindle/swindle.scrbl diff --git a/collects/scribblings/drscheme/interface-essentials.scrbl b/collects/scribblings/drscheme/interface-essentials.scrbl index 91a71651f4..27906dd840 100644 --- a/collects/scribblings/drscheme/interface-essentials.scrbl +++ b/collects/scribblings/drscheme/interface-essentials.scrbl @@ -485,7 +485,7 @@ evaluates to itself. DrScheme's @tech{interactions window} knows how to draw image-value results or images displayed via @scheme[print]. A program can manipulate image values in various ways, such as using -the @schememodname[htdp/image] library or as an +the @scheme[htdp/image] library or as an @scheme[image-snip%] value. @subsection[#:tag "xml-boxes"]{XML Boxes and Scheme Boxes} diff --git a/collects/scribblings/reference/sandbox.scrbl b/collects/scribblings/reference/sandbox.scrbl index bf6405cb57..51528080eb 100644 --- a/collects/scribblings/reference/sandbox.scrbl +++ b/collects/scribblings/reference/sandbox.scrbl @@ -370,8 +370,8 @@ A parameter that determines a list of collection directories to prefix @scheme[current-library-collection-paths] in an evaluator. This parameter is useful for cases when you want to test code using an alternate, test-friendly version of a collection, for example, testing -code that uses GUI (like the @schememodname[htdp/world] teachpack) can -be done using a fake library that provides the same interface but no +code that uses a GUI (like the @scheme[htdp/world] teachpack) can be +done using a fake library that provides the same interface but no actual interaction. The default is @scheme[null].} diff --git a/collects/setup/scribble.ss b/collects/setup/scribble.ss index ff2477a7d0..184241d50e 100644 --- a/collects/setup/scribble.ss +++ b/collects/setup/scribble.ss @@ -92,7 +92,7 @@ s) (begin (setup-printf "WARNING" - "bad 'scribblings info: ~e from: ~e" s dir) + "bad 'scribblings info: ~e from: ~e" (i 'scribblings) dir) null)))) (define docs (let* ([dirs (find-relevant-directories '(scribblings))] diff --git a/collects/swindle/info.ss b/collects/swindle/info.ss index 2dfbebcf57..ed486407e8 100644 --- a/collects/swindle/info.ss +++ b/collects/swindle/info.ss @@ -4,6 +4,8 @@ (define mzscheme-launcher-names '("swindle")) (define mzscheme-launcher-flags '(("-li" "swindle"))) +(define scribblings '(("swindle.scrbl" ()))) + ;; This simple interface is not enough, use tool.ss instead ;; (define drscheme-language-modules ;; '(("swindle.ss" "swindle") diff --git a/collects/swindle/swindle.scrbl b/collects/swindle/swindle.scrbl new file mode 100644 index 0000000000..fb6a80805b --- /dev/null +++ b/collects/swindle/swindle.scrbl @@ -0,0 +1,146 @@ +#lang scribble/doc +@(require scribble/manual) + +@title{@bold{Swindle}} + +@defmodulelang[swindle] + +Swindle extends PLT Scheme with many additional features. The main +feature that started this project is a CLOS-like object system based +on Tiny-CLOS from Xerox, but there is a lot more. + +Some documentation is available at +@link["http://barzilay.org/Swindle/"]{http://barzilay.org/Swindle/}. + +@; @table-of-contents[] + +@; ------------------------------ +@section{Features} + +The following is a high-level description of major features provided by +Swindle. For every feature, the file that provides it is specified, if +only a subset of the system is needed. + +@itemize[ + +@item{Some basic syntax extensions, including lambda &-keywords, and + improved @scheme[define] and @scheme[let] forms. (Available + separately using @scheme[swindle/base])} + +@item{Generic setters with @scheme[set!], additional useful mutation + forms: @scheme[pset!], @scheme[shift!], @scheme[rotate!], and some + simple ones like @scheme[inc!], and @scheme[push!]. (Available + separately using @scheme[swindle/setf], where the names + @scheme[setf!] and @scheme[psetf!] are used to avoid changing the + Scheme form)} + +@item{Easy macro-defining macros --- simple @scheme[syntax-rules] macros with + @scheme[defsubst], and a generic @scheme[defmacro] utility, all with a local + @scheme[let...] form, and extended to easily create symbol macros. + (@scheme[swindle/misc])} + +@item{A @scheme[collect] macro that provides very sophisticated list + comprehensions and much more. (@scheme[swindle/misc])} + +@item{An @scheme[echo] mechanism which is an alternative to using + format strings, and contains many useful features including a list + iteration construct, and is easy to extend. + (@scheme[swindle/misc.ss])} + +@item{A @scheme[regexp-case] syntax which is similar to a + @scheme[case] on strings with easy access to submatches. + (@scheme[swindle/misc])} + +@item{A CLOS-like object system -- based on Tiny CLOS, but with many + extensions that bring it much closer to CLOS, and heavily optimized. + Some added features include singleton and struct classes, applicable + stand-alone methods, method-combination, and some MOP extensions. + (Available without syntax bindings in @scheme[swindle/tiny-clos])} + +@item{Good integration with the Scheme implementation: primitive + values have corresponding Swindle classes, and struct types can also + be used as type specializers. A Swindle class will be made when + needed, and it will reflect the struct hierarchy. In addition, + structs can be defined with a Swindle-line @scheme[defstruct] syntax which + will also make it possible to create these structs with + @scheme[make] using keyword arguments. (@scheme[swindle/tiny-clos] + and @scheme[swindle/extra])} + +@item{Many hairy macros that make the object system much more convenient + (CLOS has also a lot of macro code). Some of the macros (especially + @scheme[defclass]) can be customized. (@scheme[swindle/clos])} + +@item{Useful generic functions, including @scheme[print-object] which + is used to display all objects. (@scheme[swindle/extra])} + +@item{A @scheme[match] mechanism with a generic-like interface. + (@scheme[swindle/extra])} + +@item{The fun @scheme[amb] toy. (@scheme[swindle/extra])} + +@item{A language that can easily create HTML, where the result is + human-editable. (@scheme[swindle/html])} + +@item{Customizable syntax: easy to add customized languages to DrScheme. + (@scheme[custom])} + +] + +@; ------------------------------ +@section{Libraries} + +Files marked with ``module'' provide a module by the same name, files +marked with "language module" modify the language and should be used +as an initial import for other modules. Most files (and especially +all language modules) are useful by themselves, even without using the +whole Swindle environment. + +@itemize[ + +@item{@scheme[swindle/base] (language module) --- + Basic syntax extensions, mainly Lisp-like lambda argument &-keywords.} + +@item{@scheme[swindle/setf] (module) --- + Generic setters similar to @scheme[setf] in Lisp, and a few more useful + macros.} + +@item{@scheme[swindle/misc] (module) --- Lots of useful functionality + bits, including everything from frequently useful MzScheme legacy + libraries (@schememodname[mzlib/list], @schememodname[mzlib/etc], + and @schememodname[mzlib/string]).} + +@item{@scheme[swindle/turbo] (language module) --- A module that + packages functionality from @scheme[swindle/base], + @scheme[swindle/setf] (overriding @scheme[set!] with + @scheme[setf!]), and @scheme[swindle/misc].} + +@item{@scheme[swindle/tiny-clos] (module) --- + The core object system, based on Tiny CLOS from Xerox, but heavily + modified, optimized and extended.} + +@item{@scheme[swindle/clos] (module) --- Convenient macro wrappers for + @scheme[swindle/tiny-clos].} + +@item{@scheme[swindle/extra] (module) --- Extra functionality on top + of @scheme[swindle/clos].} + +@item{@scheme[swindle/swindle] (language module) --- The main Swindle + environment module: packages @scheme[swindle/tiny-clos], + @scheme[swindle/clos], and @scheme[swindle/extra] on top of + @scheme[swindle/turbo], and some more general definitions.} + +@item{@scheme[swindle/info] (module) --- + Compilation definitions.} + +@item{@scheme[swindle/tool] (module) --- + Setup for Swindle in DrScheme: makes some languages available in + DrScheme, including custom Swindle-based languages.} + +@item{@scheme[swindle/custom] (module) --- + A sample file that demonstrates how to create a Swindle-based + customized language; see the source for instructions.} + +@item{@scheme[swindle/html] (module) --- + A language for creating HTML.} + +]