true,  just after posting my email i saw Boyko had two solutions.  one was
done in K, but my favourite of the two was his definition of a fork
function which could then be used for tacit programming.  Really helpful,
thanks Boyko.

On 18 January 2012 03:06, Marshall Lochbaum <mwlochb...@gmail.com> wrote:

> The average below isn't tacit since it refers to the argument of the
> function, x. It's true that J's [ and ] do similar things, but with
> entirely different semantics: they are actually functions of one or two
> arguments that return the appropriate argument. Perhaps it's not so evident
> here, but in J you could also write something like (- * +) and execute it
> on two variables to multiply their sum and their difference. Q would
> require {(x-y) * (x+y)} , which is unwieldy.
>
> Marshall
>
> On Tue, Jan 17, 2012 at 9:14 PM, Colin Ward <ward...@gmail.com> wrote:
>
> > Thank you to everyone for your replies.   I have taken the advice of the
> > first response and am trying both, starting with q.
> >
> > On tacit programming, i think i have found it is possible in q, and it
> does
> > have currying.  They have default (implicit?) arguments x and y to refer
> to
> > the first and second args in a monad/dyadic function.  similar to j's [
> >  and ] operators?
> >
> > So by my reckoning this code below is an example of tacit average in q?
> > q) is the prompt...
> >
> >
> > q)average:{ (sum x) % count x}
> > q)average[2 3 4]
> > 3f
> > q)average[2 3 4 5]
> > 3.5
> >
> > hope my other three questions are as easy to figure out...
> >
> > On 17 January 2012 00:59, Boyko Bantchev <boyk...@gmail.com> wrote:
> >
> > > On 16 January 2012 18:11, Kim Kuen Tang <kuent...@vodafone.de> wrote:
> > > >
> > > > I tried to calculate the mean in K using tacit programming.
> > > > (+/%# ) !10
> > > > But it is not working. Can you show how to program it in K?
> > >
> > > There are no forks like +/%# in K.  Instead, you can do:
> > >  avg: %/(+/;#:)@\:
> > >  avg 2 3 7
> > > 4.0
> > >  avg' (2 3 7; 5 6)
> > > 4 5.5
> > >
> > > Or, you can define a `fork' yourself:
> > >  fork: {[f;g;h;x] g[f[x];h[x]]}
> > > which itself is non-tacit, but allows tacit definitions such as:
> > >  avg: fork[+/;%;#:;]
> > > ----------------------------------------------------------------------
> > > For information about J forums see http://www.jsoftware.com/forums.htm
> > >
> > ----------------------------------------------------------------------
> > For information about J forums see http://www.jsoftware.com/forums.htm
> >
> ----------------------------------------------------------------------
> 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