fixed some interactions, added up through hashes

This commit is contained in:
Matthias Felleisen 2012-06-27 22:55:07 -04:00
parent 22f3c6b509
commit 379974fc6e
2 changed files with 42 additions and 16 deletions

View File

@ -26,14 +26,12 @@
(define q (make-posn "bye" 2)) (define q (make-posn "bye" 2))
(define p (make-posn 2 -3)) (define p (make-posn 2 -3))
(define v (vector "a" "b" "c" "d" "e"))
(define b (box 33))
(define s "hello world") (define s "hello world")
(define a (list (list 'a 22) (list 'b 8) (list 'c 70)))
(define v (list 1 2 3 4 5 6 7 8 9 'A))
(define w (list (list (list (list "bye") 3) true) 42))
(define z (list (list (list (list 'a 'b) 2 3) ) (list false true) "world"))
(define y (list (list (list 1 2 3) false "world")))
(define x (list 2 "hello" true)))) (define x (list 2 "hello" true))))
(set! asl (lambda () *bsl)) (set! asl (lambda () *bsl))
*bsl) *bsl)
@ -109,30 +107,38 @@
("Lists" ("Lists"
@defproc[(list? [x any]) boolean]{ @defproc[(list? [x any]) boolean]{
Determines whether some value is a list. Determines whether some value is a list.
In ASL, @racket[list?] also deals with cyclic lists.
} }
@defproc[((advanced-list* list*) [x any] ... [l (listof any)]) (listof any)]{ @defproc[((advanced-list* list*) [x any] ... [l (listof any)]) (listof any)]{
Constructs a list by adding multiple items to a list. Constructs a list by adding multiple items to a list.
In ASL, @racket[list*] also deals with cyclic lists.
} }
@defproc[((advanced-cons cons) [x X] [l (listof X)]) (listof X)]{ @defproc[((advanced-cons cons) [x X] [l (listof X)]) (listof X)]{
Constructs a list. Constructs a list.
In ASL, @racket[cons] creates a mutable list.
} }
@defproc[((advanced-append append) [l (listof any)] ...) (listof any)]{ @defproc[((advanced-append append) [l (listof any)] ...) (listof any)]{
Creates a single list from several. Creates a single list from several.
In ASL, @racket[list*] also deals with cyclic lists.
} }
@defproc[(assoc [x any] [l (listof any)]) (union (listof any) false)]{ @defproc[(assoc [x any] [l (listof any)]) (union (listof any) false)]{
Produces the first element on the list whose first is equal? to v; otherwise it produces false. Produces the first pair on @racket[l] whose @racket[first] is @racket[equal?] to @racket[x];
otherwise it produces @racket[false].
@interaction[#:eval (asl) (assoc "hello" '(("world" 2) ("hello" 3) ("good" 0)))]
}) })
("Misc" ("Misc"
@defproc[(gensym) symbol?]{ @defproc[(gensym) symbol?]{
Generates a new symbol, different from all symbols in the program. Generates a new symbol, different from all symbols in the program.
@interaction[#:eval (asl) (gensym)]
} }
@defproc[(sleep [sec positive-num]) void]{ @defproc[(sleep [sec positive-num]) void]{
Causes the program to sleep for the given number of seconds. Causes the program to sleep for the given number of seconds.
} }
@defproc[(current-milliseconds) exact-integer]{ @defproc[(current-milliseconds) exact-integer]{
Returns the current “time” in fixnum milliseconds (possibly negative). Returns the current “time” in fixnum milliseconds (possibly negative).
@interaction[#:eval (asl) (current-milliseconds)]
} }
@defproc[(force [v any]) any]{ @defproc[(force [v any]) any]{
Finds the delayed value; see also delay. Finds the delayed value; see also delay.
@ -142,57 +148,77 @@
} }
@defproc[(void) void?]{ @defproc[(void) void?]{
Produces a void value. Produces a void value.
@interaction[#:eval (asl) (void)]
} }
@defproc[(void? [x any]) boolean?]{ @defproc[(void? [x any]) boolean?]{
Determines if a value is void. Determines if a value is void.
@interaction[#:eval (asl) (void? (void)) (void? 42)]
}) })
("Posns" ("Posns"
@defproc[(set-posn-x! [p posn] [x any]) void?]{ @defproc[(set-posn-x! [p posn] [x any]) void?]{
Updates the x component of a posn. Updates the x component of a posn.
@interaction[#:eval (asl) p (set-posn-x! p 678) p]
} }
@defproc[(set-posn-y! [p posn] [x any]) void]{ @defproc[(set-posn-y! [p posn] [x any]) void]{
Updates the y component of a posn. Updates the y component of a posn.
@interaction[#:eval (asl) q (set-posn-y! q 678) q]
}) })
("Vectors" ("Vectors"
@defproc[(vector [x X] ...) (vector X ...)]{ @defproc[(vector [x X] ...) (vector X ...)]{
Constructs a vector. Constructs a vector from the given values.
@interaction[#:eval (asl) (vector 1 2 3 -1 -2 -3)]
} }
@defproc[(make-vector [n number] [x X]) (vectorof X)]{ @defproc[(make-vector [n number] [x X]) (vectorof X)]{
Constructs a vector. Constructs a vector of @racket[n] copies of @racket[x].
@interaction[#:eval (asl) (make-vector 5 0)]
} }
@defproc[(build-vector [n nat] [f (nat -> X)]) (vectorof X)]{ @defproc[(build-vector [n nat] [f (nat -> X)]) (vectorof X)]{
Constructs a vector. Constructs a vector by applying @racket[f] to the numbers @racket[0] through @racket[(- n 1)].
@interaction[#:eval (asl) (build-vector 5 add1)]
} }
@defproc[(vector-ref [v (vector X)] [n nat]) X]{ @defproc[(vector-ref [v (vector X)] [n nat]) X]{
Extracts an element from a vector. Extracts the @racket[n]th element from @racket[v].
@interaction[#:eval (asl) v (vector-ref v 3)]
} }
@defproc[(vector-length [v (vector X)]) nat]{ @defproc[(vector-length [v (vector X)]) nat]{
Determines the length of a vector. Determines the length of @racket[v].
@interaction[#:eval (asl) v (vector-length v)]
} }
@defproc[(vector-set! [v (vectorof X)][n nat][x X]) void]{ @defproc[(vector-set! [v (vectorof X)][n nat][x X]) void]{
Updates a vector. Updates @racket[v] at position @racket[n] to be @racket[x].
@interaction[#:eval (asl) v (vector-set! v 3 77) v]
} }
@defproc[(vector->list [v (vectorof X)]) (listof X)]{ @defproc[(vector->list [v (vectorof X)]) (listof X)]{
creates a list of values from the vector of values. Transforms @racket[v] into a list.
@interaction[#:eval (asl) (vector->list (vector 'a 'b 'c))]
}
@defproc[(list->vector [l (listof X)]) (vectorof X)]{
Transforms @racket[l] into a vector.
@interaction[#:eval (asl) (list->vector (list "hello" "world" "good" "bye"))]
} }
@defproc[(vector? [x any]) boolean]{ @defproc[(vector? [x any]) boolean]{
Determines if a value is a vector. Determines if a value is a vector.
@interaction[#:eval (asl) v (vector? v) (vector? 42)]
}) })
("Boxes" ("Boxes"
@defproc[(box [x any/c]) box?]{ @defproc[(box [x any/c]) box?]{
Constructs a box. Constructs a box.
@interaction[#:eval (asl) (box 42)]
} }
@defproc[(unbox [b box?]) any]{ @defproc[(unbox [b box?]) any]{
Extracts the boxed value. Extracts the boxed value.
@interaction[#:eval (asl) b (unbox b)]
} }
@defproc[(set-box! [b box?][x any/c]) void]{ @defproc[(set-box! [b box?][x any/c]) void]{
Updates a box. Updates a box.
@interaction[#:eval (asl) b (set-box! b 31) b]
} }
@defproc[(box? [x any/c]) boolean?]{ @defproc[(box? [x any/c]) boolean?]{
Determines if a value is a box. Determines if a value is a box.
@interaction[#:eval (asl) b (box? b) (box? 42)]
}) })
("Hash Tables" ("Hash Tables"

View File

@ -861,7 +861,7 @@
} }
@defproc[((beginner-struct? struct?) [x any/c]) boolean?]{ @defproc[((beginner-struct? struct?) [x any/c]) boolean?]{
Determines whether some value is a structure. Determines whether some value is a structure.
@interaction[#:eval (bsl) (struct? (posn 1 2)) (struct? 43)] @interaction[#:eval (bsl) (struct? (make-posn 1 2)) (struct? 43)]
} }
@defproc[((beginner-equal? equal?) [x any/c][y any/c]) boolean?]{ @defproc[((beginner-equal? equal?) [x any/c][y any/c]) boolean?]{
Determines whether two values are structurally equal where basic values Determines whether two values are structurally equal where basic values