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