I like this solution the best. I would like to figure out a way to only
have to code reveal at the highest level, while still retaining the
"explicit revelation only" feature. If we allow:
define factorial(n) {
reveal if (n <= 1) {
1
} else {
n * factorial(n-1)
}
}
To mean reveal the value of the if expression, we are there. What kind of
trouble does considering the if to be an expression with a value cause?
What other problems does the introduction of this pattern cause? The
Algol68 experience seems relevant here.