adjusted the plai docs so that the mutator language has everything documented in a way scribble can understand
This commit is contained in:
parent
585dc9c0a3
commit
28200e733d
8
collects/plai/scribblings/plai-exports.rkt
Normal file
8
collects/plai/scribblings/plai-exports.rkt
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
#lang racket/base
|
||||||
|
(require (for-label (except-in plai #%module-begin provide))
|
||||||
|
scribble/manual)
|
||||||
|
(provide plai:print-only-errors
|
||||||
|
plai:halt-on-errors)
|
||||||
|
(define plai:print-only-errors (racket print-only-errors))
|
||||||
|
(define plai:halt-on-errors (racket halt-on-errors))
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
#lang scribble/doc
|
#lang scribble/doc
|
||||||
@(require scribble/manual
|
@(require scribble/manual
|
||||||
|
"rkt-exports.rkt"
|
||||||
|
"plai-exports.rkt"
|
||||||
(for-syntax scheme)
|
(for-syntax scheme)
|
||||||
(for-label (except-in scheme
|
(for-label (except-in scheme
|
||||||
error printf)
|
error printf)
|
||||||
|
@ -408,17 +410,47 @@ collector.
|
||||||
|
|
||||||
@subsection{Mutator API}
|
@subsection{Mutator API}
|
||||||
|
|
||||||
The @MUTATE-LANG language supports the following syntactic forms:
|
The @MUTATE-LANG language supports the following procedures and syntactic forms:
|
||||||
|
|
||||||
@schemeblock[if and or cond case define define-values let let-values let* set! lambda λ quote error begin]
|
@(define-syntax (document/lift stx)
|
||||||
|
(syntax-case stx ()
|
||||||
|
[(_ a ...)
|
||||||
|
(with-syntax ([(doc ...)
|
||||||
|
(map (λ (a)
|
||||||
|
(with-syntax ([a a]
|
||||||
|
[rkt:a (string->symbol (format "rkt:~a" (syntax-e a)))])
|
||||||
|
#'@defidform[a]{Just like Racket's @|rkt:a|.}))
|
||||||
|
(syntax->list #'(a ...)))])
|
||||||
|
|
||||||
The syntax of @racket[define] is restricted to: @racket[(define (id arg-id ...) body ...+)].
|
#'(begin
|
||||||
The syntax of @racket[lambda] and @racket[λ] are restricted to: @racket[(lambda (arg-id ...) body ...+)].
|
doc ...))]))
|
||||||
|
|
||||||
The language also defines the following procedures:
|
@document/lift[if and or cond case define-values let let-values let* set! quote error begin]
|
||||||
|
|
||||||
@schemeblock[add1 sub1 zero? + - * / even? odd? = < > <= >= cons first rest
|
@defform[(define (id arg-id ...) body-expression ...+)]{
|
||||||
set-first! set-rest! cons? symbol? symbol=? number? boolean? empty? eq?]
|
Just like Racket's @racket[define], except restricted to the simpler form above.
|
||||||
|
}
|
||||||
|
@deftogether[(@defform[(lambda (arg-id ...) body-expression ...+)]{}
|
||||||
|
@defform[(λ (arg-id ...) body-expression ...+)]{})]{
|
||||||
|
Just like Racket's @racket[lambda] and @racket[λ], except restricted to the simpler form above.
|
||||||
|
}
|
||||||
|
|
||||||
|
@document/lift[add1 sub1 zero? + - * / even? odd? = < > <= >=
|
||||||
|
symbol? symbol=? number? boolean? empty? eq?]
|
||||||
|
|
||||||
|
@defproc[(cons [hd any/c] [tl any/c]) cons?]{
|
||||||
|
Constructs a (mutable) pair.
|
||||||
|
}
|
||||||
|
@defproc[(cons? [v any/c]) boolean?]{
|
||||||
|
Returns @racket[#t] when given a value created by @racket[cons],
|
||||||
|
@racket[#f] otherwise.
|
||||||
|
}
|
||||||
|
@defproc[(first [c cons?]) any/c]{
|
||||||
|
Extracts the first component of @racket[c].
|
||||||
|
}
|
||||||
|
@defproc[(rest [c cons?]) any/c]{
|
||||||
|
Extracts the rest component of @racket[c].
|
||||||
|
}
|
||||||
|
|
||||||
@defproc[(set-first! [c cons?] [v any/c])
|
@defproc[(set-first! [c cons?] [v any/c])
|
||||||
void]{
|
void]{
|
||||||
|
@ -430,7 +462,17 @@ The language also defines the following procedures:
|
||||||
Sets the @scheme[rest] of the cons cell @scheme[c].
|
Sets the @scheme[rest] of the cons cell @scheme[c].
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@defidform[empty]{
|
||||||
The identifier @scheme[empty] is defined to invoke @scheme[(gc:alloc-flat empty)] wherever it is used.
|
The identifier @scheme[empty] is defined to invoke @scheme[(gc:alloc-flat empty)] wherever it is used.
|
||||||
|
}
|
||||||
|
|
||||||
|
@defidform[print-only-errors]{
|
||||||
|
Behaves like PLAI's @|plai:print-only-errors|.
|
||||||
|
}
|
||||||
|
|
||||||
|
@defidform[halt-on-errors]{
|
||||||
|
Behaves like PLAI's @|plai:halt-on-errors|.
|
||||||
|
}
|
||||||
|
|
||||||
Other common procedures are left undefined as they can be defined in
|
Other common procedures are left undefined as they can be defined in
|
||||||
terms of the primitives and may be used to test collectors.
|
terms of the primitives and may be used to test collectors.
|
||||||
|
|
15
collects/plai/scribblings/rkt-exports.rkt
Normal file
15
collects/plai/scribblings/rkt-exports.rkt
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
#lang racket/base
|
||||||
|
(require (for-label racket)
|
||||||
|
(for-syntax racket/base)
|
||||||
|
scribble/manual)
|
||||||
|
(define-syntax-rule (is x ...) (begin (i x) ...))
|
||||||
|
(define-syntax (i stx)
|
||||||
|
(syntax-case stx ()
|
||||||
|
[(_ id)
|
||||||
|
(with-syntax ([ext-id (string->symbol (format "rkt:~a" (symbol->string (syntax-e #'id))))])
|
||||||
|
#`(begin (provide ext-id)
|
||||||
|
(define ext-id (racket id))))]))
|
||||||
|
|
||||||
|
(is add1 sub1 zero? + - * / even? odd? = < > <= >=
|
||||||
|
symbol? symbol=? number? boolean? empty? eq?)
|
||||||
|
(is if and or cond case define-values let let-values let* set! quote error begin)
|
Loading…
Reference in New Issue
Block a user