Working through the chapter on units in the Racket guide, it shows how to
translate the comment-specified contracts on toy-factory^ to enforced
contracts:
(define-signature contracted-toy-factory^
((contracted
[build-toys (-> integer? (listof toy?))]
[repaint (-> toy? symbol? toy?)]
[toy? (-> any/c boolean?)]
[toy-color (-> toy? symbol?)])))
I am trying to figure out how you would create an analogous
contracted-toy-store^ from the example toy-store^:
(define-signature toy-store^
(store-color ; (-> symbol?)
stock! ; (integer? -> void?)
get-inventory)) ; (-> (listof toy?))
The complication here is that the contract for get-inventory needs to have
a binding for toy?, which implicitly comes from the toy-factory^ signature.
Ultimately what I'm trying to do is to create mutually dependent units
along the lines of store-specific-factory@ from the linking example, but
where the factory could rely on the results of get-inventory being toys
according to its notion of toy?, as created by build-toys.
I have the sense that open or extends might be part of the answer, but, if
they are what I need to use, I haven't figured out how to use them properly
yet.
Thanks,
Philip
--
You received this message because you are subscribed to the Google Groups
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.