I'm not actually sure what he is starting with. (And I am not sure I would
want to replace awk - it works fine for what it does.)

It might be fun, though, to design and write some J words and phrases to
represent traditional unix concepts, and then wrap J in something (a shell
script initially and a compiled executable later) that lets us use J
efficiently in #! scripts.

Thanks,

-- 
Raul




On Sat, Feb 15, 2014 at 6:21 AM, Linda Alvord <lindaalv...@verizon.net>wrote:

> What I can't understand is how to match what he is starting with which is
> not  11;13;17
>
> Linda
>
> -----Original Message-----
> From: programming-boun...@forums.jsoftware.com
> [mailto:programming-boun...@forums.jsoftware.com] On Behalf Of linda
> Sent: Saturday, February 15, 2014 5:13 AM
> To: programm...@jsoftware.com
> Subject: Re: [Jprogramming] awk-like J sentences?
>
> I speak only J.  Once Raul translated awk I could understand what it was
> doing.  Here is how I would think of the problem as a "native" speaker of
> J.
>
> ]A=:11;13;15
> ---T--T--┐
> │11│13│15│
> L--+--+---
>
>    >A
> 11 13 15
>
>
>    2{.>A
> 11 13
>
>    +/2{.>A
> 24
>
>    ]B=: ":+/2{.>A
> 24
>
>    B;' WEEKS'
> ---T------┐
> │24│ WEEKS│
> L--+-------
>
>    B,' WEEKS'
> 24 WEEKS
>
>    f=: 13 :'":+/2{.>y'
>
>    f A
> 24
>
>    f
> [: ": [: +/ 2 {. >
>
>   (f A),' WEEKS'
> 24 WEEKS
>
>  Linda
>
>
> -----Original Message-----
> From: programming-boun...@forums.jsoftware.com
> [mailto:programming-boun...@forums.jsoftware.com] On Behalf Of Raul Miller
> Sent: Friday, February 14, 2014 11:40 PM
> To: Programming forum
> Subject: Re: [Jprogramming] awk-like J sentences?
>
> One thing to be careful about - awk is designed for a unix command line.
> When using J, you should assume a J command line. With a little work, you
> can use a J program at the unix command line, but I am not really
> comfortable with the way that works, yet.
>
> Meanwhile, at the unix command line you can work with stdin, hereris
> scripts, or with files. Similarly, with J, you can work with function
> arguments (vaguely like stdin, but right to left, instead of left to
> right), with scripts, and with files.
>
> In all cases, the natural unit of computation, for this problem - just like
> in awk - would be a single line. I've seen some other code here, but this
> is pretty simple:
>
> BEGIN {FS=";"}
>
> becomes
>
> ';'&.
> or
> ,&':'
>
> Where in AWK you are giving the program a directive, here you are
> physically incorporating the semicolon character in the line.
>
> Also, when coding J, it's good to give your code some test data, so you can
> verify that it's working the way you like. So, here's a first attempt:
>
>    ": +/ 2 {. 0&".;._2 ,&';' '11;13;17'
>
> 24
>
>
> I went with the ,&';' approach. if I had used ';'&, I would replace ;. _2
> with :. _1 in that expression. (This is the modifier which chops up the
> line in "fields".
>
>
> I went with 0&". to convert string representations of numbers to character
> representation. This mimics a feature which is implicit in awk.
>
>
> I did not directly mention the field numbers in my example. I probably
> should have. To fix that replace 2 {. with 0 1 { (J has 0 for the first
> element where AWK uses 1). Finally, +/ inserts + between the two values and
> ": converts back to text. Quite likely converting back to text is an
> unnecessary step, but that's what AWK is doing so I included it here. If
> you want this as a named verb, you could go like this:
>
>
>    addtwo=:verb def '": +/0 1 { 0&".;._1 '';''&, y'
>
>    addtwo '11;13;17'
>
> 24
>
>
> That's probably not completely intuitive, but I remember taking quite some
> time before I was really comfortable working with awk. Everything takes
> time to learn, and it's really easy to forget that after you know it well.
>
>
> Once you have this, here's using it with an inline script (J's variation on
> hereis documents):
>
>
>    addtwo;._2(0 :0)
>
> 1;2;3;4;5
>
> 6;7;8;9
>
> 10;11;
>
> )
>
>
> Executing this gave me the result:
>
> 3
>
> 13
>
> 21
>
>
> If you want to run against a file, replace (0 :0) with fread filename.
>
>
> I hope this helps,
>
>
> --
>
> Raul
>
>
>
>
>
>
>
>
>
> On Fri, Feb 14, 2014 at 9:51 PM, Lee Fallat <ircsurfe...@gmail.com> wrote:
>
> > Hey there,
> >
> > As new user to J (but several years experience with C and Java), I
> > find it very, very interesting. The power of its one liners and
> > mathematical heritage really have me hooked.  I was wondering though
> > if it has similar capabilities as awk. What's the equivalent to this
> > awk script in J?:
> >
> > BEGIN { FS=";" }
> > { print $1+$2 }
> >
> > This script sets a FieldSeparator to ;, and then for every "row", add
> > the first and second column and prints it. I would like to replace awk
> > with J!
> >
> > Thank you,
> >
> > Lee
> >
> > P.S. Excuse me if I've misidentified J sentences. (Sentences ->
> > statements?)
> > ----------------------------------------------------------------------
> > 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
>
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to