Readers answer Execute Program’s prompts by executing a program. Execute Program doesn’t have any other types of prompts.
For example, a lesson on regular expressions might have this prompt:
Q. What’s the output of
/a..b/.test(“a\ncb”)
?
A.false
The reader would answer this prompt by actually inputting false
into the REPL and executing the expression.
That lesson couldn’t also have this more typical Spaced repetition memory system prompt:
Q. What character(s) doesn’t
.
match (in many implementations)?
A.\n
Lessons which are primarily conceptual (e.g. SQL Constraint Analysis) don’t fit well into this model.
Because Execute Program has just one prompt type: Execute Program’s prompts act both as application prompts and recall prompts.
Q. What’s an example of a prompt which Execute Program can’t encode?
A. e.g. “Q. What’s the difference between *
and +
? A. *
permits zero matches”
Q. Why can’t Execute Program’s SQL constraint analysis lesson make use of its spaced-repetition system?
A. That lesson is mostly conceptual, and its ideas are difficult to encode as executable expressions.
Conversation with Gary Bernhardt, 2020-03-24