> From: david alis
> 
> While looking for a J equivalent I ended up
> using the form 1 : 0 to construct a solution.
> I had not realised until then just how good
>  1 : 0 is at composing tacit programs.
> 
> The following example produces deltb, a tacit verb
> that deletes leading and trailing blanks.
> 
> deltb=: [: 1 : 0
>    a=.' ' ~: ]  NB. non-blanks
>    b=. +./\     NB. true after first 1 (deletes leading )
>    c=.  b &.|.  NB. true until last 1 (delete trailing)
>    d=. b *. c   NB. delete leading and trailing
>    e=. [: d a   NB. put it together
>    (#~ e)f.     NB. hook that modifies Copy
> )
> 5!:5<'deltb'
>    #~ ([: (+./\ *. +./\&.|.) ' ' ~: ])

Isn't this more to do with f. Than 1 : 0 ?

   a=.' ' ~: ]   NB. non-blanks
   b=. +./\      NB. true after first 1 (deletes leading )
   c=.  b &.|.   NB. true until last 1 (delete trailing)
   d=. b *. c    NB. delete leading and trailing
   e=. [: d a    NB. put it together
   deltb=: (#~ e) f.  NB. hook that modifies Copy
   deltb
#~ ([: (+./\ *. +./\&.|.) ' ' ~: ])

Building a tacit verb this way in a script is a nice way of documenting what a 
tacit verb does without polluting the namespace with lots of component verbs 
once the script is loaded.

I can see that the use of 1 : 0 would provide a similar effect if you were 
defining the verb directly in the session though - doesn't retain the 
documentation though. 

----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to