This is a nice calculator! It brings back some early memories.  Linda

-----Original Message-----
From: [email protected]
[mailto:[email protected]] On Behalf Of Kip Murray
Sent: Friday, September 12, 2014 12:30 PM
To: [email protected]
Subject: Re: [Jprogramming] rpn calculator

Thanks very much, Dan, and thanks for the advice on verb swap.  I renamed
clear to clstk.

--Kip

On Friday, September 12, 2014, Dan Bron <[email protected]> wrote:

> Kip,
>
> The adverb is what you think it is, except you need to use a little trick
> to workaround some limitations in the interpreter.  Thus:
>
>
>            op1Arg =: adverb def 'y],.STACK =: (_1 }. STACK), u _1 {.
STACK'
>            op2Arg =: adverb def 'y],.STACK =: ( _2 }. STACK), u/ _2 {.
> STACK'
>
> Note y ] ... format; mentioning both y and u in an explicit adverb will
> ensure the verb derived will also be explicit.  If you don't mention y,
> the interpreter makes a bad guess, and produces a tacit verb (which of
> course can't update STACK).
>
> Couple of other things: one, I wouldn't recommend calling the adverb
> "monad" (foremost because it's incredibly confusing! but also because it
> conflicts with the monad defined in the standard library); two, for
> similar reasons, I wouldn't recommend naming a verb "clear" (maybe
> "clearstack" instead)?
>
> Anyway, see usage and examples below.
>
> -Dan
>
>            clear  =: 3 : ',.STACK =: '''''
>
>            NB. create and display empty STACK
>            enter  =: 4 : ',.STACK =: STACK , x'
>
>            NB. x a list of numbers
>
>            dup    =: 4 : ',.STACK =: STACK , (- x) {. STACK'
>            NB. x a non-negative integer
>
>            drop   =: 4 : ',.STACK =: (- x) }. STACK'
>
>
>            chs    =: - op1Arg
>            sqrt   =: %: op1Arg
>
>            plus   =: + op2Arg
>            minus  =: - op2Arg
>            times  =: * op2Arg
>            divide =: % op2Arg
>
>            clear''  NB. Initialize global vector STACK
>            5 2 enter''
>         5
>         2
>            1 dup''
>         5
>         2
>         2
>            times''
>         5
>         4
>            plus''
>         9
>            sqrt''
>         3
>
>
>
> ----- Original Message ---------------
>
> Subject: [Jprogramming] rpn calculator
>    From: Kip Murray <[email protected] <javascript:;>>
>    Date: Fri, 12 Sep 2014 08:17:42 -0500
>      To: "[email protected] <javascript:;>" <
> [email protected] <javascript:;>>
>
> I'm proud of the Reverse Polish Notation calculator shown below (think HP
> 50g in rpn mode).  My question is, can you devise an adverb  monad  so
that
>
> sqrt =: %: monad
>
> produces the sqrt verb below?
>
> Examples
>
>    clear''  NB. Initialize global vector STACK
>    5 2 enter''
> 5
> 2
>    1 dup''
> 5
> 2
> 2
>    times''
> 5
> 4
>    plus''
> 9
>    sqrt''
> 3
>
> Verbs
>
> clear  =: 3 : ',.STACK =: '''''
> NB. create and display empty STACK
>
> enter  =: 4 : ',.STACK =: STACK , x'
> NB. x a list of numbers
>
> dup    =: 4 : ',.STACK =: STACK , (- x) {. STACK'
> NB. x a non-negative integer
>
> drop   =: 4 : ',.STACK =: (- x) }. STACK'
>
> NB. swap?
>
> chs    =: 3 : ',.STACK =: (_1 }. STACK), -  _1 {. STACK'
> sqrt   =: 3 : ',.STACK =: (_1 }. STACK), %: _1 {. STACK'
>
> plus   =: 3 : ',.STACK =: ( _2 }. STACK), +/ _2 {. STACK'
> minus  =: 3 : ',.STACK =: ( _2 }. STACK), -/ _2 {. STACK'
> times  =: 3 : ',.STACK =: ( _2 }. STACK), */ _2 {. STACK'
> divide =: 3 : ',.STACK =: ( _2 }. STACK), %/ _2 {. STACK'
>
> --Kip Murray
>
>
>
> --
> Sent from Gmail Mobile
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
>


-- 
Sent from Gmail Mobile
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to