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 <[email protected]> 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 <[email protected]>
> 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