Date: 20 Mar 90 22:52:11 GMT
Organization: Microsoft Corp., Redmond WA
Subject: Undocumented Functions (HP-48SX)

After browsing through the manual and looking through the menus a few times,
I discovered a pair of functions that weren't explained in depth.  They
were listed in the manual in the function summary, but no references were
given.

Both have names that recall Lisp functionality, and both do what you would
expect.

APPLY takes a name and a list, and returns an algebraic:

        {1 2 3} 'foo' APPLY --> 'foo(1,2,3)'
        'APPLY(foo,1,2,3)' EVAL --> 'foo(1,2,3)'

QUOTE returns its argument, unevaluated:

        1 QUOTE --> 1
        'foo' QUOTE --> 'foo'
        'QUOTE(foo)' EVAL --> 'foo'
        'QUOTE(1+2)' EVAL --> '1+2'

At first I couldn't see any reason to have QUOTE, until I realized that it would
guard an evaluatable algebraic (e.g. '1+2') from being evaluated, making such
operations as:

        'APPLY(foo,QUOTE(1+2))' EVAL --> 'foo(1+2)'

possible.

I may be going on about nothing, but what did HP have in mind when they
included these functions?  There is a very large syntactic difference between
algebraics and programs, even though they may look the same internally, and
I don't see any trivial use for these functions, except maybe internally.
Of course, this could just mean they were meant to solve non-trivial problems,
and I'm just missing the boat entirely, which wouldn't be the first time.

Could anybody at HP enlighten me?  Will this be something covered in the
forthcoming book on programming?  And when will that book be out?

dave
--
Dave Brown                                       ...!uunet!microsoft!davidbro
...ni ssendriew eht tel eW
"the night doesn't like it...
 looks just like your face in the moon to me"

