racket/collects/scribblings/htdp-langs/beginner.scrbl
2012-06-25 19:15:09 -04:00

84 lines
2.3 KiB
Racket

#lang scribble/doc
@(require "common.rkt" "std-grammar.rkt" "prim-ops.rkt"
(for-label lang/htdp-beginner))
@title[#:tag "beginner"]{Beginning Student}
@declare-exporting[lang/htdp-beginner #:use-sources (lang/htdp-beginner lang/private/teachprims)]
@racketgrammar*+library[
#:literals (define define-struct lambda cond else if and or require lib planet
check-expect check-within check-error)
(check-expect check-within check-member-of check-range check-error require)
[program (code:line def-or-expr ...)]
[def-or-expr definition
expr
test-case
library-require]
[definition (define (name variable variable ...) expr)
(define name expr)
(define name (lambda (variable variable ...) expr))
(define-struct name (name ...))]
[expr (code:line (name expr expr ...))
(cond [expr expr] ... [expr expr])
(cond [expr expr] ... [else expr])
(if expr expr expr)
(and expr expr expr ...)
(or expr expr expr ...)
name
(code:line @#,elem{@racketvalfont{'}@racket[name]})
number
boolean
string
character]
]
@prim-nonterms[("beginner") define define-struct]
@prim-variables[("beginner") empty true false .. ... .... ..... ......]
@; --------------------------------------------------
@section[#:tag "beginner-syntax"]{Syntax}
@(define-forms/normal define)
@(define-form/explicit-lambda define lambda)
@deftogether[(
@defform/none[(unsyntax @elem{@racketvalfont{'}@racket[name]})]
@defform[(quote name)]
)]{
A quoted @racket[name] is a symbol. A symbol is a value, just like
@racket[0] or @racket[empty].}
@(prim-forms ("beginner")
define
lambda
define-struct []
define-wish
cond
else
if
and
or
check-expect
check-within
check-error
check-member-of
check-range
require
true false
#:with-beginner-function-call #t
)
@; --------------------------------------------------
@section[#:tag "beginner-pre-defined"]{Pre-defined Functions}
@(require (submod lang/htdp-beginner procedures))
@(render-sections (docs) #'here "htdp-beginner")
@;prim-op-defns[ #'here '()]