@Kartik Agaram that’s a great idea! Definitely one of my goals with the project is to provide better context about why someone might be doing what they are doing.
So far my main attempt to make that possible is by making goal/sub-goal hierarchies a primitive of the system, since those relationships automatically provide some context (e.g. “you are doing this because you have this other overarching goal” (see the attached screenshot)). However, this context is limited, since you can only get so far with stacking imperative goals on top of each other to provide justification (to continue your example: a goal above the “choose a restaurant” program could look like “choose a restaurant in such a way that it takes less than five minutes using whatever number of restaurants is least likely to lead to an argument between the two parties…” you get the point, its possible but clearly not always an ideal way to phrase/structure the justification behind a program.
One hidden feature the editor does have is inline comments: if you start an empty block with
#:
it’ll switch to a comment block that’s ignored by the control flow but visual in the editor, so that could be used to provide context.
You’ve got me thinking though, maybe I could add a block that’s explicitly “contextualize/justify the parent block”, that, like the comment block, stays out of control flow, but
unlike the comment block is somehow presented in guide mode. And that way a user wouldn’t have to be editing a program to get that context. I’ll let you know if I have more thoughts/build that!