And use contracts. 
I can't claim that all my code uses contracts everywhere, but when I 
encounter unexpected/bewildering behavior I add contracts to break those 
chains of "piped functions".
You can start with define/contract for ease of use.

Later on you can put functions that belong together in one module and test 
that they work as expected.
Then use (provide (contract-out ...)) to put contracts on the exposed 
functions, structs, etc. to make sure that they can't be used with 
unexpected values from the outside.
This way your module can have internal invariants which can't be broken 
from the outside.


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 view this discussion on the web visit

Reply via email to