[plt-scheme] contract questions--convention for "any" conflict and inline documentation
On Fri, Nov 21, 2008 at 10:39 PM, Rob Hunter <rob.hunter at gmail.com> wrote:
> I'm new to contracts, and had a couple of questions for the community:
>
> (1) If I try to do a simple (require scheme/contracts), I run up
> against a conflict with SRFI-1 "any" and the contract "any". I'm
> doing this right now, but was wondering if this was a common enough
> issue that a convention has been established:
>
> (rename-in scheme/contract
> (any c:any))
Yeah, this is a pain. By and large I've shifted to comprehensions and
the PLT list library, so I don't run into it so often. When I do use
SRFI 1 I typically require it using except-in any.
> (2) I like the idea of using contracts as a way of augmenting the
> documentation of a function. My vision is to do use a convention like
> this for certain functions:
...
>
> This is all well and good, except that I can no longer have
> my-great-fn in the (provide ...) form at the top of my module. I
> really like provide as an "always there" source of documenting what
> this module provides. So, I'm considering using the following
> "comment convention", but does anyone have a better idea?
I now put my provide forms at the bottom of modules, so they work
consistently with contracts. You can bind a name to a contract, as a
contract is just a value:
(define my-fn-contract (-> number? number?))
(define (my-fn n)
(* n n))
and at the bottom of the file:
(provide/contract
[my-fn my-fn-contract])
That's often too much work for me.
N.