F=: ([,' (+ 256&*)~ ',])&":
   F/0 1 0 0
0 (+ 256&*)~ 1 (+ 256&*)~ 0 (+ 256&*)~ 0
   ":@(F/)\0 1 0 0
0
0 (+ 256&*)~ 1
0 (+ 256&*)~ 1 (+ 256&*)~ 0
0 (+ 256&*)~ 1 (+ 256&*)~ 0 (+ 256&*)~ 0

So while / is indeed something like foldr in Haskell, \ is not.

-- 
Raul

On Sun, Nov 20, 2011 at 12:59 PM, Alexander Epifanov <[email protected]>wrote:

> I thought that / is something like foldr in Haskell.
> For example to trace / (over) in K I can see intermediate results:
> {y+x*256}\0 1 0 0
> 0 1 256 65536
> f:{y+x*256}
>  f[f[f[0;1];0];0]
> 65536
>
> In J:
>   (+ *&256)~/\0 1 0 0
> 0 1 256 256 - strange
>
> Ok,  have to think about it. :)
>
> On Sun, Nov 20, 2011 at 5:34 PM, Raul Miller <[email protected]>
> wrote:
> > To turn something into a function, you need to be able to turn it into a
> > parenthesized expression.  Anything that you can put in parenthesis can
> be
> > assigned as the value of a name.
> >
> > If you need a hint, 13 : is a good tool (though it does not always work).
> >  Replace your data with y, and:
> >
> >   13 :'".;._1@:,~&''.'' y NB. das ist gut'
> > ".;._1@:,~&'.'
> >
> > Note, however, that I have linear display form enabled (9!:3]5).
> >
> > So, anyways:
> >   Fn=: ".;._1@:,~&'.'
> >   Fn '192.0.0.1'
> > 192 0 0 1
> >
> > As for
> > +---------------------+-+-+
> > |+-----------------+-+|&|.|
> > ||+----------+--+-+|~|| | |
> > |||+--+--+--+|@:|,|| || | |
> > ||||".|;.|_1||  | || || | |
> > |||+--+--+--+|  | || || | |
> > ||+----------+--+-+| || | |
> > |+-----------------+-+| | |
> > +---------------------+-+-+
> >
> > This is telling you that the expression is equivalent to
> >   (((".;._1)@:,)~)&'.'
> >
> > In other words:
> >   the first thing that happens is that the verb ".;._1@:,~ gets a right
> > argument of '.'
> >   the second thing that happens is that '.' becomes the left argument
> > of ".;._1@:,
> >   the third thing that happens is that the string with the leading '.'
> > becomes the right argument of ".;._1
> >
> > As for how / works -- it just places the verb between the items of the
> > array.  So perhaps this will help illustrate that:
> >
> >   (+ *&256)~/0 1 0 0
> > 256
> >   0(+ *&256)~ 1(+ *&256)~ 0(+ *&256)~ 0
> > 256
> >   (+ *&256)~ 0(+ *&256)~ 0
> > 0
> >   1(+ *&256)~ 0(+ *&256)~ 0
> > 256
> >   0 (+ *&256)~ 256
> > 256
> >   256 (+ *&256) 0
> > 256
> >   (*&256) 0
> > 0
> >   256 + 0
> > 256
> >
> >
> > In essence, the final stage of the calculation is:  256 + 0 * 256...
> >
> > Note, however that there are other ways to evaluate polynomials,
> including
> > p. and also:
> >   256 #.|.1 0 0 0
> > 1
> >   256 #.|.0 1 0 0
> > 256
> >   256 #.|.0 0 1 0
> > 65536
> >
> > Anyways, I am not completely sure what you were asking, but maybe some of
> > this will help.
> >
> > --
> > Raul
> >
> >
> > On Sun, Nov 20, 2011 at 10:26 AM, Alexander Epifanov <[email protected]
> >wrote:
> >
> >> Thank you for so many letters. But please do not too much time on me
> >> :) because I have manual and I can read it.
> >>
> >> Now the next thing is unclear for me:
> >> s =: '192.168.1.1'
> >> ".;._1@:,~&'.' s .NB das ist gut
> >> 192 168 1 1
> >> but its not so clear how to convert it to function. I found &: but it
> >> does not work:
> >> (".;._2&:,&'.') s
> >> |domain error
> >> |       (".;._2&:,&'.')s
> >> its equals @: which works, and its strange, because I see that LJ
> >> describes @: and &: is the same for monads.
> >> f =: ".;._1@:,~&'.'
> >>   5!:2 <'f'
> >> +---------------------+-+-+
> >> |+-----------------+-+|&|.|
> >> ||+----------+--+-+|~|| | |
> >> |||+--+--+--+|@:|,|| || | |
> >> ||||".|;.|_1||  | || || | |
> >> |||+--+--+--+|  | || || | |
> >> ||+----------+--+-+| || | |
> >> |+-----------------+-+| | |
> >> +---------------------+-+-+
> >> But I do not understand how it splits the function, why does it throw
> >> &',' to the top? I expected something like this
> >> f =: ".;._1@:(,~&'.')
> >> 5!:2<'f'
> >>   5!:2<'f'
> >> +----------+--+-----------+
> >> |+--+--+--+|@:|+-----+-+-+|
> >> ||".|;.|_1||  ||+-+-+|&|.||
> >> |+--+--+--+|  |||,|~|| | ||
> >> |          |  ||+-+-+| | ||
> >> |          |  |+-----+-+-+|
> >> +----------+--+-----------+
> >>   f s
> >> 192 168 1 1
> >>
> >> Ok, the next one: I suppose that / does not work like in K
> >> (+ *&256)~/f '0.0.1.0'
> >> 256 - cool
> >> (+ *&256)~/f '0.1.0.0'
> >> 256
> >> again? I should be 65536 K: {y+x*256}/0 1 0 0 -> 65536
> >>
> >> One point: it seems that I like J style with Conjunctions more than K
> >> style with x,y :) but should get used to read it.
> >>
> >> Ok, let it be wrong, I will correct it later.
> >> g =: (+ *&256)~/ @: f
> >>   g s
> >> 92417 - good
> >> But I want to make it without g, so I am applying @: several times.
> >> For the following function it works:
> >> (*&2 @: *: @: +&1) 1
> >> 8
> >>
> >> f =: (+ *&256)~/ @: ".;._2 @: ,&'.'
> >> f s
> >> 192 168 1 1 - does not work, only for
> >>   f =: (+ *&256)~/ @: (".;._2 @: ,&'.')
> >>   f s
> >> 92417
> >>
> >> I suppose that it is the same question I asked above about split with @:
> >>
> >> Thank you,
> >>
> >> On Sat, Nov 19, 2011 at 2:18 PM, Raul Miller <[email protected]>
> >> wrote:
> >> > Have you noticed 9!:3 yet?  (Or, if you are using anything but the
> >> console
> >> > version, there's also a menu option.)
> >> >
> >> > Good luck,
> >> >
> >> > --
> >> > Raul
> >> >
> >> > On Fri, Nov 18, 2011 at 6:13 PM, Alexander Epifanov <
> [email protected]
> >> >wrote:
> >> >
> >> >> Yes, I am ready J for C now.
> >> >> But, of course, I understand most if the things.
> >> >>
> >> >> The main error: I thought that J is like K, but has more features.
> >> >> The problem I found: J vocabulary has much more verbs. Most of the
> >> >> verbs in K is one symbol, in J there are a lot of one-two-three
> symbol
> >> >> verbs and many special construction. K is much simpler at the point .
> >> >> Sometimes it is hard for me to understand what is it: 1 2 +/@:* 3 4
> or
> >> >> 1 2 (+/ @"*) 3 4 or 1 2 (+/@ "*) 3 4. But 5!:2 should help.
> >> >>
> >> >> For example I would write the following example in K:
> >> >> *>|/
> >> >> and for me it looks easier at the moment. Will try to overwrite it J.
> >> >>
> >> >> Regards,
> >> >>
> >> >> On Fri, Nov 18, 2011 at 11:40 PM, Kip Murray <[email protected]> wrote:
> >> >> > By all means, post questions here.
> >> >> >
> >> >> > And I think you will like J for C programmers (click on JfC at top
> of
> >> >> > vocabulary page), here is a sample from Chapter 2 Culture Shock:
> >> >> >
> >> >> > Here's an example.  Figure out what the following code does:
> >> >> >
> >> >> > int i, j, maxcol = 0;
> >> >> > float maxval = x[0][0];
> >> >> > for(i = 0;i<=xsize0;++i) {
> >> >> >   for(j = 0;j<=xsize1;++j) {
> >> >> >     if(x[i][j] > maxval) {
> >> >> >       maxval = x[i][j];
> >> >> >       maxcol = j;
> >> >> >     }
> >> >> >   }
> >> >> > }
> >> >> >
> >> >> > Not too hard.  When the code finishes, maxval is the largest
> element
> >> in
> >> >> > the array x, and maxcol is the column number it was in.  As it
> >> happens,
> >> >> > all I wanted was the column number, but there was no way for you to
> >> know
> >> >> > that.
> >> >> >
> >> >> > The same code in J:
> >> >> >
> >> >> > maxcol =. (i. >./) >./ x
> >> >> >
> >> >> > With some practice, you will learn to read this code just as
> easily as
> >> >> > you read the C.  You will recognize the / as an indicator of a loop
> >> that
> >> >> > accumulates a result, and the i. as an indicator of a search.  The
> =.
> >> >> > and =: tokens indicate assignment.
> >> >> >
> >> >> > What happened to the if statement?
> >> >> >
> >> >> > It's built into the >. primitive.  Just as most loops are hidden
> >> inside
> >> >> > primitives, so are most conditionals.  The functions you write can
> >> also
> >> >> > contain built-in conditionals.
> >> >> >
> >> >> > What's the statement delimiter?
> >> >> >
> >> >> > There isn't one.  Statements are exactly one line long.
> >> >> >
> >> >> > I've looked at some J code.  Every other character is a period or a
> >> >> > colon.  I've got spots before my eyes.  How can anybody read this
> >> stuff?
> >> >> >
> >> >> > . . .
> >> >> >
> >> >> >
> >> >> > On 11/18/2011 3:45 PM, Raul Miller wrote:
> >> >> >> If you cannot find the right reference material, then just post
> >> >> questions
> >> >> >> here.
> >> >> >>
> >> >> >> We have a "J for C Programmers" book, but we do not have a "J for
> K
> >> >> >> Programmers".  And in some ways, J is more complicated to use
> than K.
> >> >>  (K
> >> >> >> tends to be simpler for 1 dimensional data and for tree
> structures.)
> >> >> >>
> >> >> >
> ----------------------------------------------------------------------
> >> >> > For information about J forums see
> >> http://www.jsoftware.com/forums.htm
> >> >> >
> >> >>
> >> >>
> >> >>
> >> >> --
> >> >> Regards,
> >> >>   Alexander.
> >> >>
> ----------------------------------------------------------------------
> >> >> For information about J forums see
> http://www.jsoftware.com/forums.htm
> >> >>
> >> > ----------------------------------------------------------------------
> >> > For information about J forums see
> http://www.jsoftware.com/forums.htm
> >> >
> >>
> >>
> >>
> >> --
> >> Regards,
> >>   Alexander.
> >> ----------------------------------------------------------------------
> >> For information about J forums see http://www.jsoftware.com/forums.htm
> >>
> > ----------------------------------------------------------------------
> > For information about J forums see http://www.jsoftware.com/forums.htm
> >
>
>
>
> --
> Regards,
>   Alexander.
> ----------------------------------------------------------------------
> 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