It's always bugged me that nl ignored x and y. So, for the fun of it, I
thought I would try to make nl handle x and y. I pulled a lot of the code
of nl into a tacit expression so x and y would be handled properly.

nlt=.(4!:1 :: (;:^:(0:=L.)))@(0 1 2 3"_`]@.(*@#))

nl_z_=: (nlt : ((4 : 0) nlt)) f.
nms=.y
if. 0 e. #nms do. return. end.

if. #t=. x -. ' ' do.
  'n s'=. '~*' e. t
  t=. t -. '~*'
  b=. t&E. &> nms
  if. s do. b=. +./"1 b
  else. b=. {."1 b end.
  nms=. nms #~ n ~: b
end.
)

In order to make this work I needed a tacit expression that, given verbs u
and v, would calculate "u v y" if used monadically and "x u v y" if
dyadically. Funny that I couldn't find a simple way to do that in J. The
best I could do was "((u@v) : (u v))". But I couldn't figure out how to
avoid repeating u and v. A while back (when [. and ]. still worked)
something like "u(([.@].) : ([. ].))v" might have worked. As such, u and v
would appear only once.

Am I missing an easy way to do this?

On Thu, Jul 5, 2012 at 2:44 PM, ed bierly <ebie...@gmail.com> wrote:

> thanks
> as you see from the out of order posts i was continuing in the right
> direction
> and as i learn more about j it will probably make sense why that is
> reasonable
>
> On Thu, Jul 5, 2012 at 4:38 PM, ed bierly <ebie...@gmail.com> wrote:
>
> > NB.  the implementation of list_z_ seems to invoke this special case for
> x
> > and y
> >
> >    (4 !: 1)0 1 2 3
> > ┌─┬─┬─┐
> > │x│y│z│
> > └─┴─┴─┘
> >    names
> > list_z_@nl
> >    list_z_
> > 3 : 0
> > w=. {.wcsize''
> > w list y
> > :
> > if. 0=#y do. i.0 0 return. end.
> > if. 2>#$y=. >y do.
> >   d=. (' ',LF) {~ LF e. y=. toJ ": y
> >   y=. [;._2 y, d #~ d ~: {: y
> > end.
> > y=. y-. ' '{.~ c=. {:$ y=. (": y),.' '
> > (- 1>. <. x % c) ;\ <"1 y
> > )
> >
> >
> > On Thu, Jul 5, 2012 at 4:20 PM, ed bierly <ebie...@gmail.com> wrote:
> >
> >> NB. http://www.jsoftware.com/docs/help701/learning/24.htm
> >>
> >>    (0 !: 0) < 'economic.ijs'
> >>
> >>    names''
> >> p s
> >>
> >>    y
> >> 1932 1934 1957 1969 1972
> >>
> >> NB. something about x and y only?
> >>
> >>    (0 : 0) (1 !: 2) < 'test.ijs'
> >> x=:'ed'
> >> y=:'is'
> >> z=:'confused'
> >> )
> >>    clear'base'
> >>
> >>    names''
> >>    (0 !: 0) < 'test.ijs'
> >>    names''
> >> z
> >>
> >>
> >
> ----------------------------------------------------------------------
> 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