Raul, I think it is so useful it should be available immediately on starting J!
> On 25 Oct 2022, at 15:54, Raul Miller <rauldmil...@gmail.com> wrote: > > Actually, thinking about this, a series of related essays might be useful. > > I'm not quite sure how they should be labeled. But using J to build > expression-like results to illustrate concepts seems like a general > and illustrative technique for beginners. (Though of course it's also > useful for addons, like the math/calculus package.) > > Thanks, > > -- > Raul > >> On Tue, Oct 25, 2022 at 10:49 AM Raul Miller <rauldmil...@gmail.com> wrote: >> >> 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 ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm