If you remove my main objection  @   you will begin to consider functions
from right to left. Each function on the left is then applied to the already
composed expression on the right. The trains you create will be composed of
hooks and forks which can be expressed in tacit form.

My interest is really in improving how you analyze any problem. The other
focus is on how you can create expressions that are easy to interpret.
Communicating your idea in a way that can be easily understood is very
helpful to the reader. Once you have mastered the skill of solving problems
concisely and simply, you can begin to make improvements allowing your
definitions to extend to other cases or look for ways to increase the speed
of execution. My target audiences are new users and those who wish to extend
their skill in attacking problems. Hopefully both groups will have a good
base to become versatile "speakers" of the language.

Linda


-----Original Message-----in
From: programming-boun...@jsoftware.com
[mailto:programming-boun...@jsoftware.com] On Behalf Of Tracy Harms
Sent: Tuesday, November 29, 2011 10:35 AM
To: Programming forum
Subject: Re: [Jprogramming] FW: A simple function

Linda,

It does not seem to me that rephrasing to avoid @ (rank-zero composition)
makes expressions simpler, either in this specific case or in general.

If you'd like to elaborate on why that seems simpler to you, I'd like to
hear your perspective.

--Tracy


On Sat, Nov 26, 2011 at 9:46 AM, Linda Alvord
<lindaalv...@verizon.net>wrote:

> A function that works.  It is not simple. Remove the @
>
> Linda
>
> -----Original Message-----
> From: programming-boun...@jsoftware.com
> [mailto:programming-boun...@jsoftware.com] On Behalf Of EelVex
> Sent: Saturday, November 26, 2011 9:15 AM
> To: matxinle...@hotmail.com
> Cc: Programming forum
> Subject: Re: [Jprogramming] FW: A simple function
>
> On Sat, Nov 26, 2011 at 11:29 AM, m l <matxinle...@hotmail.com> wrote:
>
> >
> > I`m a beginner in J programming.
> > I need writing a simple function:
> >
> > round ( x * sqrt (x*y))
> >
> > Thanks in advance.
> >
> > Matxin
> >
> >
> Among the gazillion ways to do this:
>
> f =: [: <.0.5+ {. * %:@*/
> f 15 30
> 318
> ------
> 1. If you have a list of two numbers: x,y, you multiply them with `*/`:
> */ 15 30
> 450
>
> 2. You then take the square root (`%:`) of (`@`) that:
> (%: @ */) 15 30
> 21.2132
>
> 3. and multiply that by the first term of your list (`{.`)
> ({.  * (%: @ */)) 15 30
> 318.198
>
> 4. You then "apply" (`[:`) rounding (`<.0.5+`) to that:
> ([: <.0.5+ {. * (%:@*/)) 15 30
> 318
>
> Note that the construct in step 3 is a train of 3 verbs (see:
> http://www.jsoftware.com/help/learning/09.htm).
> (f g h) y  == (f y) g (h y)
> where
> y = 15 30
> f = {.  (take first)
> g = *  (multiply)
> h = %:@*/  (square root of product)
>
> Also, you round a number n by taking the floor of (n + 0.5).
>
----------------------------------------------------------------------
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