2 Schreibe Dein Programm!
This is documentation for the language level Schreibe Dein Programm! to go with the German textbooks Schreibe Dein Programm!.
| program | = | def-or-expr ... | ||
| def-or-expr | = | definition | ||
| | | expr | |||
| | | test-case | |||
| definition | = | (define id expr) | ||
| | | (define-record id id (id id) ...) | |||
| | | (define-record id id id (id id) ...) | |||
| | | (define-record (id id ...) id id (id id) ...) | |||
| | | (: id sig) | |||
| expr | = | (expr expr ...) ; Funktionsapplikation | ||
| | | #t | |||
| | | #f | |||
| | | number | |||
| | | string | |||
| | | (lambda (id ...) expr) | |||
| | | (λ (id ...) expr) | |||
| | | id ; Name | |||
| | | (cond (expr expr) (expr expr) ...) | |||
| | | (cond (expr expr) ... (else expr)) | |||
| | | (if expr expr) | |||
| | | (and expr ...) | |||
| | | (or expr ...) | |||
| | | (match expr (pattern expr) ...) | |||
| | | (signature sig) | |||
| | | (for-all ((id sig) ...) expr) | |||
| | | (==> expr expr) | |||
| | | (let ((id expr) (... ...)) expr) | |||
| | | (letrec ((id expr) (... ...)) expr) | |||
| | | (let* ((id expr) (... ...)) expr) | |||
| sig | = | id | ||
| | | (predicate expr) | |||
| | | (enum expr ...) | |||
| | | (mixed sig ...) | |||
| | | (sig ... -> sig) ; Funktions-Signatur | |||
| | | (list-of sig) | |||
| | | (nonempty-list-of sig) | |||
| | | %a %b %c ; Signatur-Variable | |||
| | | (combined sig ...) | |||
| | | (list-of sig) | |||
| | | (nonempty-list-of sig) | |||
| pattern | = | #t | ||
| | | #f | |||
| | | number | |||
| | | string | |||
| | | id | |||
| | | ... | |||
| | | (constructor pattern ...) | |||
| | | empty | |||
| | | (make-pair pattern pattern) | |||
| | | (list pattern ...) | |||
| test-case | = | (check-expect expr expr) | ||
| | | (check-within expr expr expr) | |||
| | | (check-member-of expr expr ...) | |||
| | | (check-satisfied expr expr) | |||
| | | (check-range expr expr expr) | |||
| | | (check-error expr expr) | |||
| | | (check-property expr) | 
Zahlen  | 
* : (number number number ... -> number)  | 
+ : (number number number ... -> number)  | 
- : (number number ... -> number)  | 
/ : (number number number ... -> number)  | 
< : (real real real ... -> boolean)  | 
<= : (real real real ... -> boolean)  | 
= : (number number number ... -> boolean)  | 
> : (real real real ... -> boolean)  | 
>= : (real real real ... -> boolean)  | 
abs : (real -> real)  | 
acos : (number -> number)  | 
angle : (number -> real)  | 
asin : (number -> number)  | 
atan : (number -> number)  | 
ceiling : (real -> integer)  | 
complex? : (any -> boolean)  | 
cos : (number -> number)  | 
current-seconds : (-> natural)  | 
denominator : (rational -> natural)  | 
even? : (integer -> boolean)  | 
exact->inexact : (number -> number)  | 
exact? : (number -> boolean)  | 
exp : (number -> number)  | 
expt : (number number -> number)  | 
floor : (real -> integer)  | 
gcd : (integer integer ... -> natural)  | 
imag-part : (number -> real)  | 
inexact->exact : (number -> number)  | 
inexact? : (number -> boolean)  | 
integer? : (any -> boolean)  | 
lcm : (integer integer ... -> natural)  | 
log : (number -> number)  | 
magnitude : (number -> real)  | 
make-polar : (real real -> number)  | 
max : (real real ... -> real)  | 
min : (real real ... -> real)  | 
modulo : (integer integer -> integer)  | 
natural? : (any -> boolean)  | 
negative? : (number -> boolean)  | 
number->string : (number -> string)  | 
number? : (any -> boolean)  | 
numerator : (rational -> integer)  | 
odd? : (integer -> boolean)  | 
positive? : (number -> boolean)  | 
quotient : (integer integer -> integer)  | 
random : (natural -> natural)  | 
rational? : (any -> boolean)  | 
real-part : (number -> real)  | 
real? : (any -> boolean)  | 
remainder : (integer integer -> integer)  | 
round : (real -> integer)  | 
sin : (number -> number)  | 
sqrt : (number -> number)  | 
string->number : (string -> (mixed number false))  | 
tan : (number -> number)  | 
zero? : (number -> boolean)  | 
boolesche Werte  | 
boolean=? : (boolean boolean -> boolean)  | 
boolean? : (any -> boolean)  | 
false? : (any -> boolean)  | 
not : (boolean -> boolean)  | 
true? : (any -> boolean)  | 
Listen  | 
append : ((list-of %a) ... -> (list-of %a))  | 
cons : (%a (list-of %a) -> (list-of %a))  | 
cons? : (any -> boolean)  | 
empty : list  | 
empty? : (any -> boolean)  | 
filter : ((%a -> boolean) (list-of %a) -> (list-of %a))  | 
first : ((list-of %a) -> %a)  | 
fold : (%b (%a %b -> %b) (list-of %a) -> %b)  | 
length : ((list-of %a) -> natural)  | 
list : (%a ... -> (list-of %a))  | 
list-ref : ((list-of %a) natural -> %a)  | 
rest : ((list-of %a) -> (list-of %a))  | 
reverse : ((list-of %a) -> (list-of %a))  | 
Zeichenketten  | 
string->strings-list : (string -> (list-of string))  | 
string-append : (string string ... -> string)  | 
string-length : (string -> natural)  | 
string<=? : (string string string ... -> boolean)  | 
string<? : (string string string ... -> boolean)  | 
string=? : (string string string ... -> boolean)  | 
string>=? : (string string string ... -> boolean)  | 
string>? : (string string string ... -> boolean)  | 
string? : (any -> boolean)  | 
strings-list->string : ((list-of string) -> string)  | 
Symbole  | 
Verschiedenes  | 
for-each : ((%a -> %b) (list-of %a) -> unspecific)  | 
map : ((%a -> %b) (list-of %a) -> (list-of %b))  | 
read : (-> any)  | 
signature? : (any -> boolean)  | 
violation : (string -> unspecific)  | 
write-newline : (-> unspecific)  | 
write-string : (string -> unspecific)  |