3 Schreibe Dein Programm! - fortgeschritten
This is documentation for the language level Schreibe Dein Programm - fortgeschritten that goes with the German textbook 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) ...) | |||
| | | (define-singleton id id id) | |||
| | | (: id sig) | |||
| field-spec | = | id | ||
| | | (id id) | |||
| quoted | = | id | ||
| | | number | |||
| | | string | |||
| | | character | |||
| | | symbol | |||
| | | (quoted ...) | |||
| | | ’quoted | |||
| expr | = | (expr expr ...) ; Funktionsapplikation | ||
| | | #t | |||
| | | #f | |||
| | | number | |||
| | | string | |||
| | | (lambda (id ...) definition ... expr) | |||
| | | (λ (id ...) definition ... expr) | |||
| | | id ; Name | |||
| | | (cond (expr definition ... expr) (expr definition ... expr) ...) | |||
| | | (cond (expr definition ... expr) ... (else definition ... expr)) | |||
| | | (if expr expr) | |||
| | | (and expr ...) | |||
| | | (or expr ...) | |||
| | | (match expr (pattern definition ... expr) ...) | |||
| | | (signature sig) | |||
| | | (for-all ((id sig) ...) definition ... expr) | |||
| | | (==> expr expr) | |||
| | | (let ((id expr) (... ...)) expr) | |||
| | | (letrec ((id expr) (... ...)) expr) | |||
| | | (let* ((id expr) (... ...)) expr) | |||
| | | ’quoted ; Quote-Literal | |||
| | | (begin expr ... expr) | |||
| sig | = | id | ||
| | | (predicate expr) | |||
| | | (enum expr ...) | |||
| | | (mixed sig ...) | |||
| | | (sig ... -> sig) ; Funktions-Signatur | |||
| | | %a %b %c ; Signatur-Variable | |||
| | | (combined sig ...) | |||
| | | (list-of sig) | |||
| | | (cons-list-of sig) | |||
| pattern | = | #t | ||
| | | #f | |||
| | | number | |||
| | | string | |||
| | | id | |||
| | | ... | |||
| | | (constructor pattern ...) | |||
| | | (cons pattern pattern) | |||
| | | (list pattern ...) | |||
| | | ’quoted | |||
| 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) | 
| equal? : (any 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 | 
| string->symbol : (string -> symbol) | 
| symbol->string : (symbol -> string) | 
| symbol=? : (symbol symbol -> boolean) | 
| symbol? : (any -> boolean) | 
| Verschiedenes | 
| apply : (function (list-of %a) -> %b) | 
| eq? : (%a %b -> boolean) | 
| 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) |