[plt-scheme] contracts in teaching languages
Just read 2htdp/universe.ss
(Robby has been working on this for a while. This is a seriously non-
trivial problem, with a research component. The DeinProgram version of
HtDP supports it already, though they use a serious hack and worst,
the docs are in German.)
On Oct 6, 2009, at 8:55 PM, Todd O'Bryan wrote:
> I want to try having students use real, honest-to-goodness contracts,
> just to see how it goes. I'm just about to cover booleans and
> predicates, so I think it's a good time to give it a go.
>
> I think I'm also ready to try writing a macro, so I want to do
> something like:
>
> (define/c (foo arg1 arg2 arg3)
> (pred1? pred2? pred3? -> ret-pred?)
> body)
>
> and have that convert to:
>
> (define/contract (foo arg1 arg2 arg3)
> (-> pred1? pred2? pred3? ret-pred?) ; equivalently (pred1? pred2?
> pred3? . -> . ret-pred?)
> body)
>
> One concern is that the reader in BSL gets upset by functions in
> argument positions, but I know there's a way around that, because the
> universe teachpack lets you specify handlers: (on-tick mod-world),
> etc.
>
> So, can somebody explain how I'd let my re-written contract fly under
> the BSL parser's radar? Obviously, if I get this working, I'll let
> people know how well--or badly--it works.
>
> Todd
> _________________________________________________
> For list-related administrative tasks:
> http://list.cs.brown.edu/mailman/listinfo/plt-scheme