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

Reply via email to