Given the character of this work, it might be more useful as an essay,
rather than an addon.

That said, it could also be rewritten to be more compact. For example:

bracket=: 3 :0
  if. 1=#y=.":y do. y else. '(',y,')' end.
)

instance=: 1 :0
 m,'_',bracket y
:
 (bracket x),'_',m,'_',bracket y
)

instances=: 3 :0
  (y,'_z_')=:(y)=:y instance
  EMPTY
)

linstances=: 3 :0
 instances y [ instances y,'l'
)

linstances"0 'fghi'

(Though, also, here, the first and =: declaration could be made to be
more compact -- using the new {{ }} explicit form they could be made
single line declarations with possibly improved clarity.)

Thanks,

-- 
Raul

On Tue, Oct 25, 2022 at 9:55 AM chris burke <cbu...@jsoftware.com> wrote:
>
> I think this is Simon Garland's fgh script, which used to be
> distributed in system/packages/misc/fgh.ijs. For example:
>
>    load '~temp/fgh.ijs'
>
>    0 f g h 1
> 0 _f_ (g_ (h_ 1))
>
>
>    0 (f g h) 1
> (0 _f_ 1) _g_ (0 _h_ 1)
>
> The script is below. Perhaps someone could check it, and then we put
> it in the addons?
>
> -----------------------
>
> NB. fgh.ijs
> NB.
> NB. displays calling sequence for simple J expressions, where:
> NB.
> NB.   f_       monadic f
> NB.   _f_      dyadic f
> NB.   _fI_     dyadic inverse of f etc..
> NB.
> NB. e.g.
> NB.   f g h 0
> NB.   (f g h) 0
> NB.   f&g 0
> NB.   f&.g 0
> NB.   0 f g 1
> NB.   f/1 2 3
>
> bracket=: 3 : 0
> if. (1=$,y=.":y) do. y
> else. '(',y,')' end.
> )
>
> f=: 3 : 0
> 'f_ ',bracket y
> :
> (bracket x),' _f_ ',bracket y
> )
>
> g=: 3 : 0
> 'g_ ',bracket y
> :
> (bracket x),' _g_ ',bracket y
> )
>
> h=: 3 : 0
> 'h_ ',bracket y
> :
> (bracket x),' _h_ ',bracket y
> )
>
> i=: 3 : 0
> 'i_ ',bracket y
> :
> (bracket x),' _i_ ',bracket y
> )
>
> fI=: 3 : 0
> 'fI_ ',bracket y
> :
> (bracket x),' _fI_ ',bracket y
> )
>
> gI=: 3 : 0
> 'gI_ ',bracket y
> :
> (bracket x),' _gI_ ',bracket y
> )
>
> hI=: 3 : 0
> 'hI_ ',bracket y
> :
> (bracket x),' _hI_ ',bracket y
> )
>
> iI=: 3 : 0
> 'iI_ ',bracket y
> :
> (bracket x),' _iI_ ',bracket y
> )
>
> NB. definitions in z locale:
> f_z_=: f_fgh_ :. fI_fgh_
> g_z_=: g_fgh_ :. gI_fgh_
> h_z_=: h_fgh_ :. hI_fgh_
> i_z_=: i_fgh_ :. iI_fgh_
>
> On Sun, Oct 23, 2022 at 10:45 PM Richard Donovan <rsdono...@hotmail.com> 
> wrote:
> >
> > Many years ago (J4 or J6) I remember there was a function that showed how 
> > hooks and trains etc were expanded, using such output as x _f_ g_ y etc 
> > (where _f_ indicated dyad etc). Does anyone know of this and whether it 
> > still exists?
> >
> > Thanks in advance
> > ----------------------------------------------------------------------
> > For information about J forums see http://www.jsoftware.com/forums.htm
> ----------------------------------------------------------------------
> 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