Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Embrace #lang #137

Open
dvanhorn opened this issue Jun 21, 2023 · 0 comments
Open

Embrace #lang #137

dvanhorn opened this issue Jun 21, 2023 · 0 comments

Comments

@dvanhorn
Copy link
Member

A few perennial issues in the class:

  • people don't know what the behavior of a given program should be. We often say, "what does Racket say?" and this works 99% of the time, but we're really talking about a subset of Racket and there are subtle issues here.
  • we assume expressions are "well-formed" but never fully spell out what this means.
  • students don't seem to internalize they are building a PL in which they can write and run programs.

To improve this, I propose, we ship #lang language for each of the languages plus all of the assignment languages. The implementation will be by expansion to Racket, so you'll get usual IDE tools, plus static checking for conformance to the language. This makes it definitive to say "run Check Syntax" and if it's OK, your compiler better be able to compile it. It also gives students a reference implementation for the interpreter without leaking any details since the implementation via expansion doesn't shed light on how to write the interpreter/compiler. Being able to run programs in DrRacket may help reinforce the ideas that you can write programs in these languages.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant