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