Some thoughts on the 'reveal' operator

Bill Frantz frantz@communities.com
Fri, 24 Sep 1999 11:48:02 -0700


At 10:31 PM 9/23/1999 -0700, ping@lfw.org wrote:
>A keyword might still be more appropriate.
>
>    define factorial(n) {
>        reveal if (n <= 1) {
>            reveal 1
>        } else {
>            reveal n * factorial(n-1)
>        }
>    }

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.