misc improvements
svn: r7189
This commit is contained in:
parent
74b20d58d1
commit
b4dd7515c4
|
@ -3,7 +3,7 @@
|
||||||
(lib "match.ss")
|
(lib "match.ss")
|
||||||
(lib "acks.ss" "drscheme")
|
(lib "acks.ss" "drscheme")
|
||||||
(lib "uri-codec.ss" "net")
|
(lib "uri-codec.ss" "net")
|
||||||
(lib "dirs.ss" "setup")
|
(lib "dirs.ss" "setup")
|
||||||
(lib "list.ss")
|
(lib "list.ss")
|
||||||
(lib "url.ss" "net")
|
(lib "url.ss" "net")
|
||||||
"../private/manuals.ss"
|
"../private/manuals.ss"
|
||||||
|
@ -19,470 +19,465 @@
|
||||||
(define interface-version 'v1)
|
(define interface-version 'v1)
|
||||||
(define timeout +inf.0)
|
(define timeout +inf.0)
|
||||||
|
|
||||||
; html-subpage : xexprs -> xexpr
|
;; html-subpage : xexprs -> xexpr
|
||||||
(define (html-subpage . xs)
|
(define (html-subpage . xs)
|
||||||
(case (helpdesk-platform)
|
(apply (case (helpdesk-platform)
|
||||||
[(internal-browser-simple)
|
[(internal-browser-simple) make-simple-page/internal-browser]
|
||||||
(apply make-simple-page/internal-browser xs)]
|
[(internal-browser) make-split-page/internal-browser]
|
||||||
[(internal-browser)
|
[else make-split-page])
|
||||||
(apply make-split-page/internal-browser xs)]
|
xs))
|
||||||
[else
|
|
||||||
(apply make-split-page xs)]))
|
|
||||||
|
|
||||||
(define (start initial-request)
|
(define (start initial-request)
|
||||||
; Note : DrScheme preferences calls start with a #f argument,
|
;; Note : DrScheme preferences calls start with a #f argument,
|
||||||
; so initial-request can be either a request structure or #f
|
;; so initial-request can be either a request structure or #f
|
||||||
(unless initial-request
|
(unless initial-request
|
||||||
(set! initial-request
|
(set! initial-request
|
||||||
(make-request 'get (string->url "") '() '() #f "localhost" (internal-port) "localhost")))
|
(make-request 'get (string->url "") '() '() #f "localhost"
|
||||||
|
(internal-port) "localhost")))
|
||||||
(with-errors-to-browser
|
(with-errors-to-browser
|
||||||
send/finish
|
send/finish
|
||||||
(lambda ()
|
(lambda ()
|
||||||
(let* ([bindings (request-bindings initial-request)]
|
(let* ([bindings (request-bindings initial-request)]
|
||||||
[subpage (if (exists-binding? 'subpage bindings)
|
[subpage (if (exists-binding? 'subpage bindings)
|
||||||
(extract-binding/single 'subpage bindings)
|
(extract-binding/single 'subpage bindings)
|
||||||
"home")])
|
"home")])
|
||||||
; dispatch on subpage
|
;; dispatch on subpage
|
||||||
; the dynamic ones (manuals and release) are handled are here,
|
;; the dynamic ones (manuals and release) are handled are here,
|
||||||
; the static pages below
|
;; the static pages below
|
||||||
(match subpage
|
(match subpage
|
||||||
["manuals"
|
["manuals"
|
||||||
(html-subpage
|
(html-subpage
|
||||||
"PLT Scheme Help Desk: Installed Manuals"
|
"PLT Scheme Help Desk: Installed Manuals"
|
||||||
(html-top initial-request) (left-items) ""
|
(html-top initial-request) (left-items) ""
|
||||||
`(,@(if (eq? (helpdesk-platform) 'external-browser)
|
`(,@(if (eq? (helpdesk-platform) 'external-browser)
|
||||||
'((h3 "NOTE")
|
'((h3 "NOTE")
|
||||||
(p "To see the list of manuals installed on " (i "your") " computer, "
|
(p "To see the list of manuals installed on " (i "your") " computer,"
|
||||||
" use the HelpDesk from within DrScheme. This list of manuals reflects "
|
" use the HelpDesk from within DrScheme. This list of manuals reflects"
|
||||||
"what is installed on this HelpDesk server only."))
|
" what is installed on this HelpDesk server only."))
|
||||||
'())
|
'())
|
||||||
(VERBATIM ,(find-manuals))
|
(VERBATIM ,(find-manuals))
|
||||||
(p)
|
(p)
|
||||||
(i "Version: " ,(plt-version))))]
|
(i "Version: " ,(plt-version))))]
|
||||||
["release"
|
["release"
|
||||||
(let ()
|
(let ([link-stuff (lambda (url txt)
|
||||||
(define (link-stuff url txt) `(li (b (a ([href ,url]) ,txt))))
|
`(li (b (a ([href ,url]) ,txt))))])
|
||||||
(html-subpage
|
(html-subpage
|
||||||
"PLT Scheme Help Desk: Release Info"
|
"PLT Scheme Help Desk: Release Info"
|
||||||
(html-top initial-request) (left-items) ""
|
(html-top initial-request) (left-items) ""
|
||||||
`((VERBATIM
|
`((VERBATIM
|
||||||
((h3 "NOTE")
|
((h3 "NOTE")
|
||||||
(p "To see the release information for your installation, use the HelpDesk from "
|
(p "To see the release information for your installation,"
|
||||||
"within DrScheme. "
|
" use the HelpDesk from within DrScheme."
|
||||||
"The following information reflects the installation on this server only.")
|
" The following information reflects the installation on"
|
||||||
|
" this server only.")
|
||||||
(h1 "Release Information")
|
(h1 "Release Information")
|
||||||
(p)
|
(p (i "Version: " ,(plt-version)))
|
||||||
(i "Version: " ,(plt-version))
|
|
||||||
(p)
|
|
||||||
(ul ,(link-stuff url-helpdesk-license "License")
|
(ul ,(link-stuff url-helpdesk-license "License")
|
||||||
,(link-stuff url-helpdesk-release-notes "Release Notes")
|
,(link-stuff url-helpdesk-release-notes "Release Notes")
|
||||||
,(link-stuff url-helpdesk-known-bugs "Known Bugs")
|
,(link-stuff url-helpdesk-known-bugs "Known Bugs")
|
||||||
|
|
||||||
,(link-stuff url-helpdesk-patches "Downloadable Patches"))
|
,(link-stuff url-helpdesk-patches "Downloadable Patches"))
|
||||||
(p)
|
(p "The PLT software is installed on this machine at" (br)
|
||||||
"The PLT software is installed on this machine at" (br)
|
(pre nbsp nbsp
|
||||||
(pre nbsp nbsp
|
,(path->string (find-collects-dir)))))))))]
|
||||||
,(let-values ([(base file dir?)
|
|
||||||
(split-path (collection-path "mzlib"))])
|
|
||||||
(path->string base))))))))]
|
|
||||||
[_
|
[_
|
||||||
(let-values ([(right-header right-items)
|
(let-values ([(right-header right-items)
|
||||||
(page-tag->title+items subpage)])
|
(page-tag->title+items subpage)])
|
||||||
(cond
|
(cond
|
||||||
[(and (eq? (helpdesk-platform) 'internal-browser-simple)
|
[(and (eq? (helpdesk-platform) 'internal-browser-simple)
|
||||||
(equal? subpage "home"))
|
(equal? subpage "home"))
|
||||||
; change the "home" page for internal HelpDesk with no menus
|
;; change the "home" page for internal HelpDesk with no menus
|
||||||
(html-subpage "PLT Scheme Help Desk: Home"
|
(html-subpage "PLT Scheme Help Desk: Home"
|
||||||
(html-top initial-request)
|
(html-top initial-request)
|
||||||
"home"
|
"home"
|
||||||
right-header (append (left-items)
|
right-header
|
||||||
`(((p)
|
(append (left-items)
|
||||||
(i "Version: " ,(plt-version))))))]
|
`(((p)
|
||||||
|
(i "Version: " ,(plt-version))))))]
|
||||||
[else
|
[else
|
||||||
(html-subpage "PLT Scheme Help Desk: Home"
|
(html-subpage "PLT Scheme Help Desk: Home"
|
||||||
(html-top initial-request)
|
(html-top initial-request)
|
||||||
(left-items)
|
(left-items)
|
||||||
right-header right-items)]))])))))
|
right-header right-items)]))])))))
|
||||||
|
|
||||||
(define (br)
|
(define (br*)
|
||||||
(if (eq? (helpdesk-platform) 'external-browser)
|
(if (eq? (helpdesk-platform) 'external-browser)
|
||||||
'()
|
'()
|
||||||
'((br) (br))))
|
'((br) (br))))
|
||||||
|
|
||||||
(define (left-items)
|
(define (left-items)
|
||||||
`(-- -- -- -- --
|
`(-- -- -- -- --
|
||||||
("Get help: "
|
("Get help: "
|
||||||
nbsp nbsp nbsp nbsp
|
nbsp nbsp nbsp nbsp
|
||||||
(b (a ((href ,url-helpdesk-help)) "Help Desk"))
|
(b (a ((href ,url-helpdesk-help)) "Help Desk"))
|
||||||
,@(br))
|
,@(br*))
|
||||||
-- --
|
-- --
|
||||||
("Learn to program in Scheme: "
|
("Learn to program in Scheme: "
|
||||||
nbsp nbsp nbsp nbsp
|
nbsp nbsp nbsp nbsp
|
||||||
"Reference: "
|
"Reference: "
|
||||||
'nbsp
|
'nbsp
|
||||||
(a ((href ,url-helpdesk-manuals)) "Manuals") ", "
|
(a ((href ,url-helpdesk-manuals)) "Manuals") ", "
|
||||||
(a ((href ,url-helpdesk-libraries)) "Libraries")
|
(a ((href ,url-helpdesk-libraries)) "Libraries")
|
||||||
(br) nbsp nbsp nbsp nbsp
|
(br) nbsp nbsp nbsp nbsp
|
||||||
(b (a ((href ,url-helpdesk-program-design)) "Program Design: "))
|
(b (a ((href ,url-helpdesk-program-design)) "Program Design: "))
|
||||||
'nbsp
|
'nbsp
|
||||||
(a ((href ,url-helpdesk-books)) "Books") ", "
|
(a ((href ,url-helpdesk-books)) "Books") ", "
|
||||||
(a ((href ,url-helpdesk-languages)) "Languages") ", "
|
(a ((href ,url-helpdesk-languages)) "Languages") ", "
|
||||||
(a ((href ,url-helpdesk-teachpacks)) "Teachpacks")
|
(a ((href ,url-helpdesk-teachpacks)) "Teachpacks")
|
||||||
,@(br))
|
,@(br*))
|
||||||
-- --
|
-- --
|
||||||
("How to run programs: "
|
("How to run programs: "
|
||||||
nbsp nbsp nbsp nbsp (b (a ((href ,url-helpdesk-software)) "Software: "))
|
nbsp nbsp nbsp nbsp (b (a ((href ,url-helpdesk-software)) "Software: "))
|
||||||
'nbsp
|
'nbsp
|
||||||
(a ((href ,url-helpdesk-tour)) "Tour") ", "
|
(a ((href ,url-helpdesk-tour)) "Tour") ", "
|
||||||
(a ((href ,url-helpdesk-drscheme)) "DrScheme") ", "
|
(a ((href ,url-helpdesk-drscheme)) "DrScheme") ", "
|
||||||
(a ((href ,url-helpdesk-release)) "Release")
|
(a ((href ,url-helpdesk-release)) "Release")
|
||||||
,@(br)
|
,@(br*)
|
||||||
; (a ((href ,url-helpdesk-drscheme-faq)) "FAQ")) ; Moved to the DrScheme page
|
;; (a ((href ,url-helpdesk-drscheme-faq)) "FAQ") ; Moved to DrScheme page
|
||||||
)
|
)
|
||||||
-- --
|
-- --
|
||||||
("Get involved:"
|
("Get involved:"
|
||||||
nbsp nbsp nbsp nbsp
|
nbsp nbsp nbsp nbsp
|
||||||
(a ((href ,url-helpdesk-mailing-lists)) "Mailing Lists")
|
(a ((href ,url-helpdesk-mailing-lists)) "Mailing Lists")
|
||||||
,@(case (helpdesk-platform)
|
,@(case (helpdesk-platform)
|
||||||
((external-browser) `(", " (a ((href ,url-external-send-bug-report)) "Send a bug report")))
|
[(external-browser)
|
||||||
(else '()))
|
`(", " (a ((href ,url-external-send-bug-report)) "Send a bug report"))]
|
||||||
,@(br))
|
[else '()])
|
||||||
-- --
|
,@(br*))
|
||||||
(""
|
-- --
|
||||||
" " " "
|
(""
|
||||||
,@(case (helpdesk-platform)
|
" " " "
|
||||||
[(internal-browser internal-browser-simple)
|
,@(case (helpdesk-platform)
|
||||||
'((b (a ([mzscheme
|
[(internal-browser internal-browser-simple)
|
||||||
"((dynamic-require '(lib |bug-report.ss| |help|) 'help-desk:report-bug))"])
|
'((b (a ([mzscheme
|
||||||
(font ([color "forestgreen"]) "Send a bug report")))
|
"((dynamic-require '(lib |bug-report.ss| |help|) 'help-desk:report-bug))"])
|
||||||
nbsp nbsp)]
|
(font ([color "forestgreen"]) "Send a bug report")))
|
||||||
[else `()])
|
nbsp nbsp)]
|
||||||
; DrScheme Acknowledgements
|
[else `()])
|
||||||
,@(case (helpdesk-platform)
|
;; DrScheme Acknowledgements
|
||||||
[(internal-browser internal-browser-simple)
|
,@(case (helpdesk-platform)
|
||||||
`((b (a ((href ,url-helpdesk-acknowledge))
|
[(internal-browser internal-browser-simple)
|
||||||
(font ([color "forestgreen"])"Acknowledgments"))))]
|
`((b (a ((href ,url-helpdesk-acknowledge))
|
||||||
[else '()]))
|
(font ([color "forestgreen"])"Acknowledgments"))))]
|
||||||
-- -- -- --))
|
[else '()]))
|
||||||
|
-- -- -- --))
|
||||||
|
|
||||||
; page-tag->title+items : string -> (values string list-of-right-items)
|
;; page-tag->title+items : string -> (values string list-of-right-items)
|
||||||
(define (page-tag->title+items page-tag)
|
(define (page-tag->title+items page-tag)
|
||||||
(match (assoc page-tag easy-pages)
|
(match (assoc page-tag easy-pages)
|
||||||
[#f (page-tag->title+items "home")]
|
[#f (page-tag->title+items "home")]
|
||||||
[(tag header body) (values header body)]))
|
[(tag header body) (values header body)]))
|
||||||
|
|
||||||
|
;; static subpages
|
||||||
; static subpages
|
;; - In ALPHABETICAL order
|
||||||
; - In ALPHABETICAL order
|
|
||||||
(define easy-pages
|
(define easy-pages
|
||||||
`(("acknowledge" "Acknowledgements"
|
`(("acknowledge" "Acknowledgements"
|
||||||
((p ,(get-general-acks))
|
((p ,(get-general-acks))
|
||||||
(p ,(get-translating-acks))))
|
(p ,(get-translating-acks))))
|
||||||
("books" "Books"
|
("books" "Books"
|
||||||
((h3 "HTDP - How to Design Programs")
|
((h3 "HTDP - How to Design Programs")
|
||||||
(p (a ((href "http://www.htdp.org/"))
|
(p (a ((href "http://www.htdp.org/"))
|
||||||
"'How to Design Programs - An Introduction to Programming and Computing'")
|
"'How to Design Programs - An Introduction to Programming and Computing'")
|
||||||
(br)
|
(br)
|
||||||
" by Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, and Shriram Krishnamurthi")
|
" by Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, and Shriram Krishnamurthi")
|
||||||
(p (a ((href "http://www.ccs.neu.edu/home/matthias/htdp-plus.html")) "HTDP+")
|
(p (a ((href "http://www.ccs.neu.edu/home/matthias/htdp-plus.html")) "HTDP+")
|
||||||
(br)
|
(br)
|
||||||
" Supplemental Materials for 'How to Design Programs'")
|
" Supplemental Materials for 'How to Design Programs'")
|
||||||
(h3 "Teach Yourself Scheme in Fixnum Days")
|
(h3 "Teach Yourself Scheme in Fixnum Days")
|
||||||
(p (a ((href, url-helpdesk-teach-yourself))
|
(p (a ((href, url-helpdesk-teach-yourself))
|
||||||
" Teach Yourself Scheme in Fixnum Days")
|
" Teach Yourself Scheme in Fixnum Days")
|
||||||
(br)
|
(br)
|
||||||
"- an introduction to Scheme by Dorai Sitaram")))
|
"- an introduction to Scheme by Dorai Sitaram")))
|
||||||
("drscheme" "DrScheme"
|
("drscheme" "DrScheme"
|
||||||
((p "DrScheme is PLT's flagship programming environment")
|
((p "DrScheme is PLT's flagship programming environment")
|
||||||
(ul (li (a ((href ,url-helpdesk-tour)) (b "Tour: ") "An introduction to DrScheme"))
|
(ul (li (a ((href ,url-helpdesk-tour)) (b "Tour: ") "An introduction to DrScheme"))
|
||||||
(li (a ((href ,url-helpdesk-interface-essentials)) "Quick-start jump into the user manual"))
|
(li (a ((href ,url-helpdesk-interface-essentials)) "Quick-start jump into the user manual"))
|
||||||
(li (a ((href ,url-helpdesk-languages)) "Languages: ") "supported by DrScheme")
|
(li (a ((href ,url-helpdesk-languages)) "Languages: ") "supported by DrScheme")
|
||||||
(li (a ((href ,url-helpdesk-drscheme-manual)) "PLT DrScheme: Programming Environment Manual")
|
(li (a ((href ,url-helpdesk-drscheme-manual)) "PLT DrScheme: Programming Environment Manual")
|
||||||
(br) "The complete user manual")
|
(br) "The complete user manual")
|
||||||
(li (a ((href ,url-helpdesk-drscheme-faq)) "FAQ") ": DrScheme Frequently asked questions")
|
(li (a ((href ,url-helpdesk-drscheme-faq)) "FAQ") ": DrScheme Frequently asked questions")
|
||||||
(li (a ((href ,url-helpdesk-why-drscheme)) "Why DrScheme?")))))
|
(li (a ((href ,url-helpdesk-why-drscheme)) "Why DrScheme?")))))
|
||||||
("home" "Help Desk Home"
|
("home" "Help Desk Home"
|
||||||
((p "The HelpDesk is a complete source of information about PLT software, "
|
((p "The HelpDesk is a complete source of information about PLT software, "
|
||||||
"including DrScheme, MzScheme and MrEd.")
|
"including DrScheme, MzScheme and MrEd.")
|
||||||
(p "There are two ways to find information in the Help Desk: searching and browsing.")
|
(p "There are two ways to find information in the Help Desk: searching and browsing.")
|
||||||
(h3 "Search the Help Desk")
|
(h3 "Search the Help Desk")
|
||||||
(p "Search for keywords, index entries or raw text in the documentation pages"
|
(p "Search for keywords, index entries or raw text in the documentation pages"
|
||||||
(ul (li (i "Keywords: ") "are Scheme names, such as " (b "define") " and " (b "cons")".")
|
(ul (li (i "Keywords: ") "are Scheme names, such as " (b "define") " and " (b "cons")".")
|
||||||
(li (i "Index entries: ") "are topical phrases, such as 'lists'.")
|
(li (i "Index entries: ") "are topical phrases, such as 'lists'.")
|
||||||
(li (i "Raw text: ") "are fragments of text from the documentation pages. "
|
(li (i "Raw text: ") "are fragments of text from the documentation pages. "
|
||||||
"Use only as a last resort."))
|
"Use only as a last resort."))
|
||||||
"The Help Desk search results are sorted according to their source.")
|
"The Help Desk search results are sorted according to their source.")
|
||||||
(h3 "Browse the Help Desk")
|
(h3 "Browse the Help Desk")
|
||||||
(ul (li "The " (b "Home") " link will take you back to this page.")
|
(ul (li "The " (b "Home") " link will take you back to this page.")
|
||||||
(li "The " (b "Manuals") " link displays a list of manuals and other documentation")
|
(li "The " (b "Manuals") " link displays a list of manuals and other documentation")
|
||||||
#;(li "The " (b "Send a bug report") " link allows you to submit a bug report to PLT."))))
|
#;(li "The " (b "Send a bug report") " link allows you to submit a bug report to PLT."))))
|
||||||
("known-bugs" "Known Bugs"
|
("known-bugs" "Known Bugs"
|
||||||
((p (a ([name "bugs"] [value "Bugs"]))
|
((p (a ([name "bugs"] [value "Bugs"]))
|
||||||
"For an up-to-date list of bug reports, see the "
|
"For an up-to-date list of bug reports, see the "
|
||||||
(a ([href "http://bugs.plt-scheme.org/query/"] [target "_top"])
|
(a ([href "http://bugs.plt-scheme.org/query/"] [target "_top"])
|
||||||
"PLT bug report query page") ".")))
|
"PLT bug report query page") ".")))
|
||||||
("languages" "Scheme Languages"
|
("languages" "Scheme Languages"
|
||||||
((p "DrScheme supports many dialects of Scheme. "
|
((p "DrScheme supports many dialects of Scheme. "
|
||||||
"The following dialects are specifically designed for teaching "
|
"The following dialects are specifically designed for teaching "
|
||||||
"computer science. In DrScheme's "
|
"computer science. In DrScheme's "
|
||||||
; TODO: (a ([href "/servlets/scheme/what.ss#lang-sel"]) "language selection menu")
|
;; TODO: (a ([href "/servlets/scheme/what.ss#lang-sel"]) "language selection menu")
|
||||||
(b "Language selection menu") ", "
|
(b "Language selection menu") ", "
|
||||||
"they are found under the heading "
|
"they are found under the heading "
|
||||||
(b "How to Design Programs") "."
|
(b "How to Design Programs") "."
|
||||||
(ul (li (b "Beginning Student") " is a pedagogical version of Scheme "
|
(ul (li (b "Beginning Student") " is a pedagogical version of Scheme "
|
||||||
"that is tailored for beginning computer science students.")
|
"that is tailored for beginning computer science students.")
|
||||||
(li (b "Beginning Student with List Abbreviations") " extends Beginning Student "
|
(li (b "Beginning Student with List Abbreviations") " extends Beginning Student "
|
||||||
"with convenient (but potentially confusing) "
|
"with convenient (but potentially confusing) "
|
||||||
"ways to write lists, including quasiquote.")
|
"ways to write lists, including quasiquote.")
|
||||||
(li (b "Intermediate Student") " adds local bindings and higher-order functions.")
|
(li (b "Intermediate Student") " adds local bindings and higher-order functions.")
|
||||||
(li (b "Intermediate Student with Lambda") " adds anonymous functions.")
|
(li (b "Intermediate Student with Lambda") " adds anonymous functions.")
|
||||||
(li (b "Advanced Student") " adds mutable state.")))
|
(li (b "Advanced Student") " adds mutable state.")))
|
||||||
(p "The " (b "The Essentials of Programming Languages")
|
(p "The " (b "The Essentials of Programming Languages")
|
||||||
" language is designed for use with the MIT Press textbook with that name.")
|
" language is designed for use with the MIT Press textbook with that name.")
|
||||||
(p "Other dialects are designed for practicing programmers. "
|
(p "Other dialects are designed for practicing programmers. "
|
||||||
"The R5RS language is a standard dialect of Scheme that is defined by the "
|
"The R5RS language is a standard dialect of Scheme that is defined by the "
|
||||||
"Revised^5 Report on the Algorithmic Language Scheme. "
|
"Revised^5 Report on the Algorithmic Language Scheme. "
|
||||||
"In DrScheme's language selection menu, the following languages are found under the heading PLT: ")
|
"In DrScheme's language selection menu, the following languages are found under the heading PLT: ")
|
||||||
(ul (li (b "Textual (MzScheme)") " is a superset of R5RS Scheme. "
|
(ul (li (b "Textual (MzScheme)") " is a superset of R5RS Scheme. "
|
||||||
"In addition to the base Scheme language, PLT Scheme provides "
|
"In addition to the base Scheme language, PLT Scheme provides "
|
||||||
"exceptions, threads, objects, modules, components, regular expressions, "
|
"exceptions, threads, objects, modules, components, regular expressions, "
|
||||||
"TCP support, filesystem utilities, and process control operations. "
|
"TCP support, filesystem utilities, and process control operations. "
|
||||||
"This language is defined in PLT MzScheme: Language Manual. ")
|
"This language is defined in PLT MzScheme: Language Manual. ")
|
||||||
(li (b "Graphical (MrEd)") " includes the Textual (MzScheme) language "
|
(li (b "Graphical (MrEd)") " includes the Textual (MzScheme) language "
|
||||||
"and adds a graphical toolbox, described in PLT MrEd: Graphical Toolbox Manual.")
|
"and adds a graphical toolbox, described in PLT MrEd: Graphical Toolbox Manual.")
|
||||||
(li (b "Pretty Big") " is a superset of the Graphical (MrEd) language, "
|
(li (b "Pretty Big") " is a superset of the Graphical (MrEd) language, "
|
||||||
"and adds forms from the Pretty Big language. "
|
"and adds forms from the Pretty Big language. "
|
||||||
"For those forms that are in both languages, Pretty Big behaves like Graphical (MrEd)."))
|
"For those forms that are in both languages, Pretty Big behaves like Graphical (MrEd)."))
|
||||||
(p "The " (b "module language") " supports development using PLT Scheme's module form, "
|
(p "The " (b "module language") " supports development using PLT Scheme's module form, "
|
||||||
"where the module's language is explicitly declared in the code.")
|
"where the module's language is explicitly declared in the code.")
|
||||||
(p "See the DrScheme manual for further details on the languages, especially the "
|
(p "See the DrScheme manual for further details on the languages, especially the "
|
||||||
"teaching languages.")
|
"teaching languages.")
|
||||||
(p "DrScheme's set of languages can be extended, so the above list mentions only "
|
(p "DrScheme's set of languages can be extended, so the above list mentions only "
|
||||||
"the languages installed by default. "
|
"the languages installed by default. "
|
||||||
"Documentation for all languages is available through the manuals page.")))
|
"Documentation for all languages is available through the manuals page.")))
|
||||||
("libraries" "Libraries"
|
("libraries" "Libraries"
|
||||||
((h3 "Built-in Libraries")
|
((h3 "Built-in Libraries")
|
||||||
(p "PLT Scheme has a lot of libraries. The core libraries are described in "
|
(p "PLT Scheme has a lot of libraries. The core libraries are described in "
|
||||||
(a ((href ,url-helpdesk-mzlib)) "PLT MzLib: Libraries Manual"))
|
(a ((href ,url-helpdesk-mzlib)) "PLT MzLib: Libraries Manual"))
|
||||||
(p "See the " (a ((href ,url-helpdesk-manuals)) "Manuals") " page for more.")
|
(p "See the " (a ((href ,url-helpdesk-manuals)) "Manuals") " page for more.")
|
||||||
(h3 "User / PLaneT Libraries")
|
(h3 "User / PLaneT Libraries")
|
||||||
(p (a ((href ,url-external-planet)) "PLaneT") " is the repository for user contributed libraries. "
|
(p (a ((href ,url-external-planet)) "PLaneT") " is the repository for user contributed libraries. "
|
||||||
"Join the PLaneT announcement mailing list to get notified on new PLaneT packages.")))
|
"Join the PLaneT announcement mailing list to get notified on new PLaneT packages.")))
|
||||||
("license" "License"
|
("license" "License"
|
||||||
((a ([name "lic"] [value "License"]))
|
((a ([name "lic"] [value "License"]))
|
||||||
(b "PLT Software") (br)
|
(b "PLT Software") (br)
|
||||||
(b ,(format "Copyright (c) ~a PLT Scheme Inc." copyright-year))
|
(b ,(format "Copyright (c) ~a PLT Scheme Inc." copyright-year))
|
||||||
(p "PLT software is distributed under the GNU Library General Public "
|
(p "PLT software is distributed under the GNU Library General Public "
|
||||||
" License (LGPL). This means you can link PLT software (such as "
|
" License (LGPL). This means you can link PLT software (such as "
|
||||||
"MzScheme or MrEd) into proprietary applications, provided you follow "
|
"MzScheme or MrEd) into proprietary applications, provided you follow "
|
||||||
"the specific rules stated in the LGPL. You can also modify PLT "
|
"the specific rules stated in the LGPL. You can also modify PLT "
|
||||||
"software; if you distribute a modified version, you must distribute it "
|
"software; if you distribute a modified version, you must distribute it "
|
||||||
"under the terms of the LGPL, which in particular means that you must "
|
"under the terms of the LGPL, which in particular means that you must "
|
||||||
"release the source code for the modified software. See "
|
"release the source code for the modified software. See "
|
||||||
(a ([href ,(format "/servlets/doc-anchor.ss?~a&file=~a"
|
(a ([href ,(format "/servlets/doc-anchor.ss?~a&file=~a"
|
||||||
"name=COPYING.LIB&caption=Copying PLT software"
|
"name=COPYING.LIB&caption=Copying PLT software"
|
||||||
(uri-encode
|
(uri-encode
|
||||||
(path->string
|
(path->string
|
||||||
(simplify-path (build-path (find-doc-dir)
|
(simplify-path (build-path (find-doc-dir)
|
||||||
"release-notes"
|
"release-notes"
|
||||||
"COPYING.LIB")))))])
|
"COPYING.LIB")))))])
|
||||||
"COPYING.LIB")
|
"COPYING.LIB")
|
||||||
" for more information.")
|
" for more information.")
|
||||||
(p "PLT software includes or extends the following copyrighted material:"
|
(p "PLT software includes or extends the following copyrighted material:"
|
||||||
,@(let ()
|
,@(map
|
||||||
(define (make-item ss) `(ul (li ,@(map (lambda (s) `(div ,s (br))) ss))))
|
(lambda (ss) `(ul (li ,@(map (lambda (s) `(div ,s (br))) ss))))
|
||||||
(map
|
`(("DrScheme"
|
||||||
make-item
|
,(format "Copyright (c) 1995-~a PLT" copyright-year)
|
||||||
`(("DrScheme"
|
,(format "Copyright (c) 2004-~a PLT Scheme Inc." copyright-year)
|
||||||
,(format "Copyright (c) 1995-~a PLT" copyright-year)
|
"All rights reserved.")
|
||||||
,(format "Copyright (c) 2004-~a PLT Scheme Inc." copyright-year)
|
("MrEd"
|
||||||
"All rights reserved.")
|
,(format "Copyright (c) 1995-~a PLT" copyright-year)
|
||||||
("MrEd"
|
,(format "Copyright (c) 2004-~a PLT Scheme Inc." copyright-year)
|
||||||
,(format "Copyright (c) 1995-~a PLT" copyright-year)
|
"All rights reserved.")
|
||||||
,(format "Copyright (c) 2004-~a PLT Scheme Inc." copyright-year)
|
("MzScheme"
|
||||||
"All rights reserved.")
|
,(format "Copyright (c) 1995-~a PLT" copyright-year)
|
||||||
("MzScheme"
|
,(format "Copyright (c) 2004-~a PLT Scheme Inc." copyright-year)
|
||||||
,(format "Copyright (c) 1995-~a PLT" copyright-year)
|
"All rights reserved.")
|
||||||
,(format "Copyright (c) 2004-~a PLT Scheme Inc." copyright-year)
|
("libscheme"
|
||||||
"All rights reserved.")
|
"Copyright (c) 1994 Brent Benson"
|
||||||
("libscheme"
|
"All rights reserved.")
|
||||||
"Copyright (c) 1994 Brent Benson"
|
("wxWindows"
|
||||||
"All rights reserved.")
|
,(string-append "Copyright (c) 1994 Artificial Intelligence Applications Institute, "
|
||||||
("wxWindows"
|
"The University of Edinburgh")
|
||||||
,(string-append "Copyright (c) 1994 Artificial Intelligence Applications Institute, "
|
"All rights reserved.")
|
||||||
"The University of Edinburgh")
|
("wxWindows Xt"
|
||||||
"All rights reserved.")
|
,(string-append "Copyright (c) 1994 Artificial Intelligence Applications Institute, "
|
||||||
("wxWindows Xt"
|
"The University of Edinburgh")
|
||||||
,(string-append "Copyright (c) 1994 Artificial Intelligence Applications Institute, "
|
"Copyright (c) 1995 GNU (Markus Holzem)"
|
||||||
"The University of Edinburgh")
|
"All rights reserved.")
|
||||||
"Copyright (c) 1995 GNU (Markus Holzem)"
|
("Conservative garbage collector"
|
||||||
"All rights reserved.")
|
"Copyright (c) 1988, 1989 Hans-J. Boehm, Alan J. Demers"
|
||||||
("Conservative garbage collector"
|
"Copyright (c) 1991-1996 Xerox Corporation"
|
||||||
"Copyright (c) 1988, 1989 Hans-J. Boehm, Alan J. Demers"
|
"Copyright (c) 1996-1999 Silicon Graphics"
|
||||||
"Copyright (c) 1991-1996 Xerox Corporation"
|
"Copyright (c) 1999-2001 by Hewlett-Packard Company"
|
||||||
"Copyright (c) 1996-1999 Silicon Graphics"
|
"All rights reserved.")
|
||||||
"Copyright (c) 1999-2001 by Hewlett-Packard Company"
|
("Collector C++ extension by Jesse Hull and John Ellis"
|
||||||
"All rights reserved.")
|
"Copyright (c) 1994 Xerox Corporation"
|
||||||
("Collector C++ extension by Jesse Hull and John Ellis"
|
"All rights reserved.")
|
||||||
"Copyright (c) 1994 Xerox Corporation"
|
("The A List"
|
||||||
"All rights reserved.")
|
"Copyright (c) 1997-2000 Kyle Hammond."
|
||||||
("The A List"
|
"All rights reserved.")
|
||||||
"Copyright (c) 1997-2000 Kyle Hammond."
|
("Independent JPEG Group library"
|
||||||
"All rights reserved.")
|
"Copyright (c) 1991-1998 Thomas G. Lane."
|
||||||
("Independent JPEG Group library"
|
"All rights reserved.")
|
||||||
"Copyright (c) 1991-1998 Thomas G. Lane."
|
("libpng"
|
||||||
"All rights reserved.")
|
"Copyright (c) 2000-2002 Glenn Randers-Pehrson"
|
||||||
("libpng"
|
"All rights reserved.")
|
||||||
"Copyright (c) 2000-2002 Glenn Randers-Pehrson"
|
("zlib"
|
||||||
"All rights reserved.")
|
"Copyright (c) 1995-2002 Jean-loup Gailly and Mark Adler"
|
||||||
("zlib"
|
"All rights reserved.")
|
||||||
"Copyright (c) 1995-2002 Jean-loup Gailly and Mark Adler"
|
("GNU MP Library"
|
||||||
"All rights reserved.")
|
"Copyright (c) 1992, 1993, 1994, 1996 by Free Software Foundation, Inc.")
|
||||||
("GNU MP Library"
|
("GNU lightning"
|
||||||
"Copyright (c) 1992, 1993, 1994, 1996 by Free Software Foundation, Inc.")
|
"Copyright (c) 1994, 1995, 1996, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.")
|
||||||
("GNU lightning"
|
("GNU Classpath"
|
||||||
"Copyright (c) 1994, 1995, 1996, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.")
|
"GNU Public License with special exception"))))))
|
||||||
("GNU Classpath"
|
|
||||||
"GNU Public License with special exception")))))))
|
|
||||||
("mailing-lists" "Mailing Lists"
|
("mailing-lists" "Mailing Lists"
|
||||||
((p "There are two mailing lists: the discussion list and the announcements only list.")
|
((p "There are two mailing lists: the discussion list and the announcements only list.")
|
||||||
(h3 "Archives")
|
(h3 "Archives")
|
||||||
(p "The lists are archived:"
|
(p "The lists are archived:"
|
||||||
(ul (li (a ((href ,url-external-discussion-list-archive)) "Discussions")
|
(ul (li (a ((href ,url-external-discussion-list-archive)) "Discussions")
|
||||||
" - " (a ((href ,url-external-discussion-list-archive-old)) "(old archive)"))
|
" - " (a ((href ,url-external-discussion-list-archive-old)) "(old archive)"))
|
||||||
(li (a ((href ,url-external-announcement-list-archive)) "Announcements only"))))
|
(li (a ((href ,url-external-announcement-list-archive)) "Announcements only"))))
|
||||||
(h3 "Subscribing")
|
(h3 "Subscribing")
|
||||||
(p "Visit the " (a ((href ,url-external-mailing-list-subscription))
|
(p "Visit the "
|
||||||
"subscription page") " to join the mailing lists.")))
|
(a ((href ,url-external-mailing-list-subscription))
|
||||||
("patches" "Downloadable Patches"
|
"subscription page")
|
||||||
((p (a ([name "patches"] [value "Downloadable patches"]))
|
" to join the mailing lists.")))
|
||||||
"The following Web page may contain downloadable patches to fix "
|
("patches" "Downloadable Patches"
|
||||||
"serious bugs in version " ,(version) " of the PLT software:")
|
((p (a ([name "patches"] [value "Downloadable patches"]))
|
||||||
(p nbsp nbsp
|
"The following Web page may contain downloadable patches to fix "
|
||||||
,(let ([url (format "http://download.plt-scheme.org/patches/~a/"
|
"serious bugs in version " ,(version) " of the PLT software:")
|
||||||
(version))])
|
(p nbsp nbsp
|
||||||
`(a ([href ,url] [target "_top"]) ,url)))))
|
,(let ([url (format "http://download.plt-scheme.org/patches/~a/"
|
||||||
|
(version))])
|
||||||
|
`(a ([href ,url] [target "_top"]) ,url)))))
|
||||||
("program-design" "Program Design"
|
("program-design" "Program Design"
|
||||||
((h3 "For Students")
|
((h3 "For Students")
|
||||||
(p "The textbook " (a ((href "http://www.htdp.org")) "How to Design Programs")
|
(p "The textbook " (a ((href "http://www.htdp.org")) "How to Design Programs")
|
||||||
" provides an introduction to programming using the DrScheme environment. "
|
" provides an introduction to programming using the DrScheme environment. "
|
||||||
"The Help Desk provides the following interactve support for the text book: "
|
"The Help Desk provides the following interactve support for the text book: "
|
||||||
(a ((href ,url-helpdesk-teachpacks)) "Teachpack documentation"))
|
(a ((href ,url-helpdesk-teachpacks)) "Teachpack documentation"))
|
||||||
(h3 "For Experienced Programmers")
|
(h3 "For Experienced Programmers")
|
||||||
(p (a ((href ,url-helpdesk-teach-yourself)) "Teach Yourself Scheme in a Fixnum Days")
|
(p (a ((href ,url-helpdesk-teach-yourself)) "Teach Yourself Scheme in a Fixnum Days")
|
||||||
": For programmers with lots of experience in other languages")
|
": For programmers with lots of experience in other languages")
|
||||||
(h3 "For Teachers and Researchers")
|
(h3 "For Teachers and Researchers")
|
||||||
(p (a ((href ,url-helpdesk-why-drscheme)) "PLT's vision"))))
|
(p (a ((href ,url-helpdesk-why-drscheme)) "PLT's vision"))))
|
||||||
("release-notes" (h1 "Release Notes for PLT Scheme version " ,(version))
|
("release-notes" (h1 "Release Notes for PLT Scheme version " ,(version))
|
||||||
((a ([name "relnotes"] [VALUE "Release notes"]))
|
((a ([name "relnotes"] [VALUE "Release notes"]))
|
||||||
(p "Detailed release notes:"
|
(p "Detailed release notes:"
|
||||||
(ul
|
(ul
|
||||||
,@(let ()
|
,@(let ()
|
||||||
(define (make-release-notes-entry s)
|
(define (make-release-notes-entry s)
|
||||||
(match s
|
(match s
|
||||||
[(label dir filename)
|
[(label dir filename)
|
||||||
(let ([file (build-path (find-doc-dir) "release-notes" dir filename)])
|
(let ([file (build-path (find-doc-dir) "release-notes" dir filename)])
|
||||||
(if (file-exists? file)
|
(if (file-exists? file)
|
||||||
`(li (a ([href ,(format
|
`(li (a ([href ,(format
|
||||||
"/servlets/doc-anchor.ss?file=~a&name=~a&caption=~a"
|
"/servlets/doc-anchor.ss?file=~a&name=~a&caption=~a"
|
||||||
(uri-encode (path->string file))
|
(uri-encode (path->string file))
|
||||||
filename
|
filename
|
||||||
label)])
|
label)])
|
||||||
,label))
|
,label))
|
||||||
#f))]))
|
#f))]))
|
||||||
(filter
|
(filter
|
||||||
values ; delete #f entries
|
values ; delete #f entries
|
||||||
(map make-release-notes-entry
|
(map make-release-notes-entry
|
||||||
'(("DrScheme release notes" "drscheme" "HISTORY")
|
'(("DrScheme release notes" "drscheme" "HISTORY")
|
||||||
("Teachpack release notes" "teachpack" "HISTORY")
|
("Teachpack release notes" "teachpack" "HISTORY")
|
||||||
("MzScheme version 300 notes" "mzscheme" "MzScheme_300.txt")
|
("MzScheme version 300 notes" "mzscheme" "MzScheme_300.txt")
|
||||||
("MzScheme release notes" "mzscheme" "HISTORY")
|
("MzScheme release notes" "mzscheme" "HISTORY")
|
||||||
("MrEd release notes" "mred" "HISTORY")
|
("MrEd release notes" "mred" "HISTORY")
|
||||||
("Stepper release notes" "stepper" "HISTORY")
|
("Stepper release notes" "stepper" "HISTORY")
|
||||||
("MrFlow release notes" "mrflow" "HISTORY")))))))))
|
("MrFlow release notes" "mrflow" "HISTORY")))))))))
|
||||||
("software" "Software"
|
("software" "Software"
|
||||||
((ul (li (a ((href ,url-helpdesk-drscheme)) "DrScheme") ": The programming environment")
|
((ul (li (a ((href ,url-helpdesk-drscheme)) "DrScheme") ": The programming environment")
|
||||||
(li (a ((href ,url-helpdesk-languages)) "Languages") ": The family of languages "
|
(li (a ((href ,url-helpdesk-languages)) "Languages") ": The family of languages "
|
||||||
"supported by PLT Software")
|
"supported by PLT Software")
|
||||||
; (li (a ((href ,url-helpdesk-documentation)) "Documentation")
|
;; (li (a ((href ,url-helpdesk-documentation)) "Documentation")
|
||||||
; ": Organization and manuals")
|
;; ": Organization and manuals")
|
||||||
; (li (a ((href ,url-helpdesk-hints)) "Hints")
|
;; (li (a ((href ,url-helpdesk-hints)) "Hints")
|
||||||
; ": How to do things in Scheme")
|
;; ": How to do things in Scheme")
|
||||||
)))
|
)))
|
||||||
("teachpacks" "Teachpacks"
|
("teachpacks" "Teachpacks"
|
||||||
((ul (li (a ((href ,url-helpdesk-teachpacks-for-htdp))
|
((ul (li (a ((href ,url-helpdesk-teachpacks-for-htdp))
|
||||||
"Teachpacks for 'How to Design Programs'"))
|
"Teachpacks for 'How to Design Programs'"))
|
||||||
(li (a ((href ,url-helpdesk-teachpacks-for-htdc))
|
(li (a ((href ,url-helpdesk-teachpacks-for-htdc))
|
||||||
"Teachpacks for 'How to Design Classes'")))))
|
"Teachpacks for 'How to Design Classes'")))))
|
||||||
("teachscheme" "Teach Scheme"
|
("teachscheme" "Teach Scheme"
|
||||||
((h2 "TeachScheme! Workshops")
|
((h2 "TeachScheme! Workshops")
|
||||||
(p (a ([name "workshops"] [value "TeachScheme! workshops"]))
|
(p (a ([name "workshops"] [value "TeachScheme! workshops"]))
|
||||||
"TeachScheme! is a free summer workshop for high school teachers. "
|
"TeachScheme! is a free summer workshop for high school teachers. "
|
||||||
"Its goal is to bridge the gulf between high school and "
|
"Its goal is to bridge the gulf between high school and "
|
||||||
"college-level computing curricula. In the workshop, programming "
|
"college-level computing curricula. In the workshop, programming "
|
||||||
"is taught as an algebraic problem-solving process, and computing "
|
"is taught as an algebraic problem-solving process, and computing "
|
||||||
"is the natural generalization of grade-school level calculating." )
|
"is the natural generalization of grade-school level calculating." )
|
||||||
(p "Students who learn to design programs properly learn to "
|
(p "Students who learn to design programs properly learn to "
|
||||||
"analyze a problem statement; express its essence, abstractly "
|
"analyze a problem statement; express its essence, abstractly "
|
||||||
"and with examples; formulate statements and comments in a "
|
"and with examples; formulate statements and comments in a "
|
||||||
"precise language; evaluate and revise these activities in "
|
"precise language; evaluate and revise these activities in "
|
||||||
"light of checks and tests; and pay attention to details. "
|
"light of checks and tests; and pay attention to details. "
|
||||||
"As a result, all students benefit, those who wish to study computing "
|
"As a result, all students benefit, those who wish to study computing "
|
||||||
"as well as those who just wish to explore the subject.")
|
"as well as those who just wish to explore the subject.")
|
||||||
(p "For more information, see the "
|
(p "For more information, see the "
|
||||||
(a ([href "http://www.teach-scheme.org/Workshops/"]
|
(a ([href "http://www.teach-scheme.org/Workshops/"]
|
||||||
[TARGET "_top"])
|
[TARGET "_top"])
|
||||||
"TeachScheme! Workshops page") ".")))
|
"TeachScheme! Workshops page") ".")))
|
||||||
("tour" "Tour of DrScheme"
|
("tour" "Tour of DrScheme"
|
||||||
((p "Take a " (a ((href ,url-external-tour-of-drscheme)) "Tour of DrScheme")
|
((p "Take a " (a ((href ,url-external-tour-of-drscheme)) "Tour of DrScheme")
|
||||||
" and discover the wealth of features of the interactive, "
|
" and discover the wealth of features of the interactive, "
|
||||||
"integrated programming environment.")))
|
"integrated programming environment.")))
|
||||||
("why-drscheme" "Why DrScheme?"
|
("why-drscheme" "Why DrScheme?"
|
||||||
((p "Teaching introductory computing courses with Scheme, or any other "
|
((p "Teaching introductory computing courses with Scheme, or any other "
|
||||||
"functional programming language, facilitates many conceptual tasks "
|
"functional programming language, facilitates many conceptual tasks "
|
||||||
"and greatly enhances the appeal of computer science. Specifically, "
|
"and greatly enhances the appeal of computer science. Specifically, "
|
||||||
"students can implement many interesting programs with just a small "
|
"students can implement many interesting programs with just a small "
|
||||||
"subset of the language. The execution "
|
"subset of the language. The execution "
|
||||||
"of a functional program can be explained with simple reduction "
|
"of a functional program can be explained with simple reduction "
|
||||||
"rules that students mostly know from "
|
"rules that students mostly know from "
|
||||||
"secondary school. Interactive implementations allow for quick "
|
"secondary school. Interactive implementations allow for quick "
|
||||||
"feedback to the programmers andmake the "
|
"feedback to the programmers andmake the "
|
||||||
"development of small functions a pleasant experience.")
|
"development of small functions a pleasant experience.")
|
||||||
(p "Unfortunately, the poor quality of the available environments "
|
(p "Unfortunately, the poor quality of the available environments "
|
||||||
"for functional languages negates these advantages. Typical "
|
"for functional languages negates these advantages. Typical "
|
||||||
"implementations accept too many definitions, that is, definitions "
|
"implementations accept too many definitions, that is, definitions "
|
||||||
"that are syntactically well-formed in the sense of the full "
|
"that are syntactically well-formed in the sense of the full "
|
||||||
"language but meaningless for beginners. The results are inexplicable "
|
"language but meaningless for beginners. The results are inexplicable "
|
||||||
"behavior, incomprehensible run-time errors, or confusing type "
|
"behavior, incomprehensible run-time errors, or confusing type "
|
||||||
"error messages. The imperative nature of "
|
"error messages. The imperative nature of "
|
||||||
"read-eval-print loops often introduces subtle bugs into otherwise "
|
"read-eval-print loops often introduces subtle bugs into otherwise "
|
||||||
"perfect program developments. Scheme, in "
|
"perfect program developments. Scheme, in "
|
||||||
"particular, suffers from an adherence to Lisp's output traditions, "
|
"particular, suffers from an adherence to Lisp's output traditions, "
|
||||||
"which often produces confusing effects. "
|
"which often produces confusing effects. "
|
||||||
"In many cases students, especially those familiar with commercial C++ "
|
"In many cases students, especially those familiar with commercial C++ "
|
||||||
"environments, mistake these problems "
|
"environments, mistake these problems "
|
||||||
"for problems with the functional approach and reject the approach itself. ")
|
"for problems with the functional approach and reject the approach itself. ")
|
||||||
(p "To overcome this obstacle, we have developed a new programming "
|
(p "To overcome this obstacle, we have developed a new programming "
|
||||||
"environment for Scheme. It fully integrates a "
|
"environment for Scheme. It fully integrates a "
|
||||||
"(graphics-enriched) editor, a multi-lingual parser that can process a "
|
"(graphics-enriched) editor, a multi-lingual parser that can process a "
|
||||||
"hierarchy of syntactically restrictive "
|
"hierarchy of syntactically restrictive "
|
||||||
"variants of Scheme, a functional read-eval-print loop, and an "
|
"variants of Scheme, a functional read-eval-print loop, and an "
|
||||||
"algebraically sensible printer. The environment "
|
"algebraically sensible printer. The environment "
|
||||||
"catches the typical syntactic mistakes of beginners and pinpoints "
|
"catches the typical syntactic mistakes of beginners and pinpoints "
|
||||||
"the exact source location of run-time "
|
"the exact source location of run-time "
|
||||||
"exceptions. The new programming environment also provides an "
|
"exceptions. The new programming environment also provides an "
|
||||||
"algebraic stepper and a static debugger. The "
|
"algebraic stepper and a static debugger. The "
|
||||||
"former reduces Scheme programs, including programs with assignment "
|
"former reduces Scheme programs, including programs with assignment "
|
||||||
"and control effects, to values (and effects). "
|
"and control effects, to values (and effects). "
|
||||||
"The static debugger infers what set of values an expression may "
|
"The static debugger infers what set of values an expression may "
|
||||||
"produce and how values flow from expressions "
|
"produce and how values flow from expressions "
|
||||||
"into variables. It exposes potential safety violations and, upon "
|
"into variables. It exposes potential safety violations and, upon "
|
||||||
"demand from the programmer, explains its "
|
"demand from the programmer, explains its "
|
||||||
"reasoning by drawing value flowgraphs over the program text. "
|
"reasoning by drawing value flowgraphs over the program text. "
|
||||||
"Preliminary experience with the environment shows "
|
"Preliminary experience with the environment shows "
|
||||||
"that students find it helpful and that they greatly prefer it to "
|
"that students find it helpful and that they greatly prefer it to "
|
||||||
"shell-based or Emacs-based systems.")
|
"shell-based or Emacs-based systems.")
|
||||||
(p "A paper that discusses DrScheme in more detail is available in the paper: "
|
(p "A paper that discusses DrScheme in more detail is available in the paper: "
|
||||||
(a ((href "http://www.ccs.neu.edu/scheme/pubs/#jfp01-fcffksf"))
|
(a ((href "http://www.ccs.neu.edu/scheme/pubs/#jfp01-fcffksf"))
|
||||||
"DrScheme: A Programming Environment for Scheme."))))
|
"DrScheme: A Programming Environment for Scheme."))))
|
||||||
)))
|
)))
|
||||||
|
|
Loading…
Reference in New Issue
Block a user