Version: 4.1.3
1 Classes and Objects
This module provides tools for classes, objects, and mixins.
1.1 Predicates and Contracts
Recognizes classes and interfaces.
Recognizes objects which are instances of all the given classes and interfaces.
Recognizes classes which are subclasses (not strictly) and implementations,
respectively, of all the given classes and interfaces.
(mixin/c [super-expr ...] [arg-expr ...] [sub-expr ...]) |
Function contract for a mixin whose first argument is the parent class c%
matching (class/c super-expr ...), whose remaining arguments match
arg-expr ..., and whose result matches (class/c c% sub-expr ...).
1.2 Mixins
(ensure-interface i<%> mx c%) → (class/c c% i<%>) |
i<%> : interface? |
mx : (mixin/c [] [] [i<%>]) |
c% : class? |
Returns c% if it implements i<%>; otherwise, returns
(mx c%).
1.3 Methods
(send+ obj [message arg ...] ...) |
Sends each message (with arguments) to obj, then returns obj.
Examples: |
|
> (send+ (new c%) [say 'Hello] [say 'Good-bye]) |
|
#(struct:object:c% ...) |
(send-each objs message arg ...) |
Sends the message to each object in the list objs, returning
(void).
Examples: |
|
> (send-each | (list (new c% [msg 'Hello]) | (new c% [msg 'Good-bye])) | say 'World) |
|
Hello, World! | Good-bye, World! |
|