[plt-scheme] typed teaching languages

From: Todd O'Bryan (toddobryan at gmail.com)
Date: Sat Aug 8 12:05:22 EDT 2009

Can somebody explain how the structure of the HtDP teaching languages works?

I'm interested in, as an experiment, having my students write type
annotations for their programs, just to see whether it clears up their
type confusions or makes it even harder for them to get things right.
I've received advice from several people stating that this is a bad
idea and that I am going to create a great deal of pain for myself, so
I've been forewarned. Realize, however, that I'll spend probably two
months dealing with simple functions and structures before I ever get
to lists, so the problems of polymorphism that rear their heads so
early in a typical college class won't bother me until Halloween or
so. I'm willing to risk the pain, and I'm even willing to accept the
laughing and pointing that are likely to occur when I give up and tell
everyone that I now accept that this was just a bad idea.

But I can't even get things to begin to work, because I can't grok how
the teaching languages are structured. How would I go about adding
types and type checking (provided by Typed Scheme) to the language
constructs of Beginning Student? I tried obvious things like changing
scheme/base to typed-scheme in the htdp-beginner files, but I end up
not being able to make the colon type annotation available and when I
try to run programs I get errors saying that there are type
annotations missing.

David Van Horn provided me with some work he started on in this vein,
but he was working with Advanced Student rather than Beginning and the
internal structure of each of the teaching languages is so complicated
that I can't tell which htdp-advanced's I can just replace with
htdp-beginner's and which ones I have to reconstruct.

Is there a document anywhere that describes how the teaching languages
are built or is it all just in the code?

Parenthetically, it's really hard to figure out where things are
coming from as I'm trying to read through Scheme code without running
Check Syntax and using Jump to Definition. Is this the normal state of
Scheme coding or am I missing something that would make figuring out
how the pieces fit together easier?


Posted on the users mailing list.