(+*&256)/\.&.|.0 1 0 0
0 1 256 65536
   

R.E. Boss


-----Oorspronkelijk bericht-----
Van: [email protected] [mailto:[email protected]] Namens
Alexander Epifanov
Verzonden: zondag 20 november 2011 18:59
Aan: Chat forum
Onderwerp: Re: [Jchat] moving from K to J - impossible for me.

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