Verb 5!:2 can help by boxing the parts of verb cut:

    cut
' '&$: :([: -.&a: <;._2@,~)

    5!:2 <'cut'
+--------+-+----------------------------------+
|+-+-+--+|:|+--+---------+-------------------+|
|| |&|$:|| ||[:|+--+-+--+|+---------------+-+||
|+-+-+--+| ||  ||-.|&|++|||+---------+-+-+|~|||
|        | ||  ||  | |||||||+-+--+--+|@|,|| |||
|        | ||  ||  | |++|||||<|;.|_2|| | || |||
|        | ||  |+--+-+--+|||+-+--+--+| | || |||
|        | ||  |         ||+---------+-+-+| |||
|        | ||  |         |+---------------+-+||
|        | |+--+---------+-------------------+|
+--------+-+----------------------------------+

Now we see the middle colon separates a left and right part and we 
insert a space:

' '&$: : ([: -.&a: <;._2@,~)

An isolated colon : separates the monadic and dyadic cases of a verb. 
The part to the left of the colon tells us that when cut is called 
monadically (right argument only), cut calls itself with an added left 
argument of ' ' .

You need to define g without the :

    g =: ([: -.&a:<;._2@,~)

Then

    '.' g '192.168.1.1'
┌───┬───┬─┬─┐
│192│168│1│1│
└───┴───┴─┴─┘

The dyadic call to cut is the same as a call to g .


The Vocabulary page

http://www.jsoftware.com/docs/help701/dictionary/vocabul.htm

has information about conjunctions Monad-Dyad : and Cut ;.  (notice 
conjunction Cut ;. appears in the definition of verb cut).

For information about 5!:2 , click on !: at the top of the Vocabulary page.


I have to admit conjunctions are hard for beginners, and verbs that have 
both monadic and dyadic calls are hard for visitors from K.  I apologize 
on behalf of the J community for our habit of omitting needless spaces. 
  Just one space might have helped you understand sooner!


On 11/18/2011 3:07 AM, Alexander Epifanov wrote:
> Hello,
>
> Its the third time I am trying to move from K to J without success.
> Stopped and the 8th chapter of "Learning J", because its the half of
> the book, but I cannot read and understand other programs, also cannot
> write simple program.
>
> Let me provide an example. on K I split IP-string: 1_'(0,&"."=" ",s)_
> " ",s:"192.168.1.1"
> I was trying to rewrite it on J, but I did not find _ (cut) or
> something like that, which splits list by indexes.
>
> I found another cut in J, so the solution is '.'cut'192.168.1.1', but
> I have to understand it.
> cut
> ''&$: :([: -.&a:<;._2@,~)
>
> Do I understand correct that function makes train of verbs without
> round brackets?
> So its (f g) where f =: ' '&$: and g =: :([: -.&a:<;._2@,~)
> But it does not work:
> g '192.168.1.1'
> |syntax error
>
> Why, how to read J expression? In K I just cut expression from let and
> see all imtermediate results, in J it does not work.
> Also, I cannot find anonymous function {} in K, but if I understand
> correct in J it is prefferable to compose verbs.
>
> Thank you.
>
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to