# a doubt on app1

## Rahul — 2007-03-11 18:49:10

    what is the difference between app1 and i in joy?

    The documentation on app1 says

    app1 	X [P] -> R

    	Executes P, pushes result R on stack without X.

    so executing

    1 2 3 4 5 6 [1 2] app1

    should have given me 1 2 3 4 5 1 2 but it gives 1 2 3 4 5 6 1 2

    which seems similar to just

    1 2 3 4 5 6 [1 2] i

    I checked out what happens if the quote consumes arguments from the

    stack.

    1 2 3 4 5 6 [+ +] app1

    gives 1 2 3 15, so it is not stack invariant either.

    1 2 3 4 5 6 [+ +] i

    gives 1 2 3 15 too.

    The implementations of both

    PRIVATE void i_()

    {

        ONEPARAM("i");

        ONEQUOTE("i");

        SAVESTACK;

        POP(stk);

        exeterm(SAVED1->u.lis);

        POP(dump);

    }

    PRIVATE void app1_()

    {

        TWOPARAMS("app1");

        ONEQUOTE("app1");

        SAVESTACK;

        POP(stk);

        exeterm(SAVED1->u.lis);

        POP(dump);

    }

    does not seem to have any difference except for the assertion of

    two params at the begining.

    Could some one please clarify?

                                      rahul

## Manfred Von Thun — 2007-03-14 03:05:11

    Most embarrassing. Seems I made one mistake in the documentation

    and a separate one in the implementation. Most of the other app¹s

    are marked ³obsolescent² in the documentation, and app1 should

    be similarly marked. Good detective work, and sorry about wasting

    your time. Best wishes with your language.

     On 12/3/07 5:49 AM, "Rahul" <blufox@...> wrote:

    >

    > what is the difference between app1 and i in joy?

    >

    > The documentation on app1 says

    > app1 X [P] -> R

    > Executes P, pushes result R on stack without X.

    >

    > so executing

    > 1 2 3 4 5 6 [1 2] app1

    > should have given me 1 2 3 4 5 1 2 but it gives 1 2 3 4 5 6 1 2

    > which seems similar to just

    > 1 2 3 4 5 6 [1 2] i

    >

    > I checked out what happens if the quote consumes arguments from the

    > stack.

    >

    > 1 2 3 4 5 6 [+ +] app1

    > gives 1 2 3 15, so it is not stack invariant either.

    > 1 2 3 4 5 6 [+ +] i

    > gives 1 2 3 15 too.

    >

    > The implementations of both

    > PRIVATE void i_()

    > {

    >  ONEPARAM("i");

    >  ONEQUOTE("i");

    >  SAVESTACK;

    >  POP(stk);

    >  exeterm(SAVED1->u.lis);

    >  POP(dump);

    > }

    > PRIVATE void app1_()

    > {

    >  TWOPARAMS("app1");

    >  ONEQUOTE("app1");

    >  SAVESTACK;

    >  POP(stk);

    >  exeterm(SAVED1->u.lis);

    >  POP(dump);

    > }

    >

    > does not seem to have any difference except for the assertion of

    > two params at the begining.

    [Non-text portions of this message have been removed]

## Rahul — 2007-03-15 09:09:50

    Hi

     > Most embarrassing. Seems I made one mistake in the documentation

    > and a separate one in the implementation. Most of the other app¹s

    > are marked ³obsolescent² in the documentation, and app1 should

    > be similarly marked. Good detective work, and sorry about wasting

     Thanks for clarifying, I was trying to get V to be compatible with

    Joy.

     > your time. Best wishes with your language.

     Thanks again. :)