Also.... if this is literally a closure:

example=: {{
  a=. 1
  b=. 2
  {{ ". y }} y
}}

I think this would mean that either 'example' here could not be
represented using 3 : string, or that we would have a lot of closures
popping into existence where they previously did not exist. So... in
addition to my semantic questions, I guess I also am wondering about
the syntax.

-- 
Raul

On Mon, Jan 23, 2023 at 2:57 AM Raul Miller <rauldmil...@gmail.com> wrote:
>
> Hmm... some questions then:
>
> (1) What would a 5!:1 representation of closures look like? (Is it
> basically "just an explicit definition"?)
>
> (2) Can there be adverb/conjunction closures? Or only verb closures?
>
> (3) Are closure symbols local names, or something different? (Can they
> be updated?)
>
> (5) What would a 5!:5 representation of closures look like? (A script
> assigning the current values followed by the closure's function
> definition?)
>
> Thanks,
>
> --
> Raul
>
> On Sun, Jan 22, 2023 at 9:24 PM Elijah Stone <elro...@elronnd.net> wrote:
> >
> > (And yes, this would cause trouble for corecursion; but I think that's fine.
> > There are however tricks with binders that could be used to work around it 
> > if
> > desirable.)
> >
> > On Sun, 22 Jan 2023, Elijah Stone wrote:
> >
> > > The way I was imagining it, the effect would be that verbs in lexical 
> > > scope
> > > would be eagerly bound modulo definition order.  There would be no
> > > complication added to the object model.
> > >
> > > On Sun, 22 Jan 2023, Raul Miller wrote:
> > >
> > >> A problem with closures is that a complete implementation might
> > >> require a radical change in J's memory management mechanisms (and also
> > >> introduce difficulties for mechanisms like gerunds or 5!:n).
> > >>
> > >> Currently, J's arrays are trees, and verbs, adverbs and conjunctions
> > >> are arrays in this sense.
> > >>
> > >> With closures, verbs might become digraphs because J allows undefined
> > >> names in tacit verb definitions.
> > >>
> > >> To resolve these issues, closures might only be allowed to preserve
> > >> noun values. But introducing some sort of "complete local copy" aka
> > >> "snapshot" mechanism for verbs adverbs and conjunctions might also be
> > >> viable?
> > >>
> > >> Thanks,
> > >>
> > >> --
> > >> Raul
> > >>
> > >> On Tue, Jan 17, 2023 at 7:01 PM Elijah Stone <elro...@elronnd.net> wrote:
> > >>>
> > >>> I suggest:
> > >>>
> > >>> [x] u &:: (k;v;k;v...) y
> > >>>
> > >>> Will evaluate u with bindings kvkv... (raveled) active.  Should work for
> > > both
> > >>> explicit and tacit.  Implementation is allowed to coalesce; e.g., u &::
> > > (k;v)
> > >>> &:: (k;v) `'' may be rendered u &:: (k;v;k;v), deduplicated, &c.
> > >>> Substitution also ok; eg (f%#) &:: ('f';+/`'') becomes +/%#.
> > >>>
> > >>> I would like for verbs defined inside of explicit verbs to be implicitly
> > >>> closed; this is obviously a compat break, but.
> > >>>
> > >>> On Tue, 17 Jan 2023, Elijah Stone wrote:
> > >>>
> > >>> > I don't love the proposal, as I think a conception of verbs as first
> > > class
> > >>> > should involve _less_ hackery with representations, not more.  But I
> > > don't
> > >>> > feel that strongly either way.
> > >>> >
> > >>> > More fruitful, IMO, would be to work out how to add closures, as I 
> > >>> > think
> > >>> > there
> > >>> > is a more urgent need for that (u./v. is a band-aid).  Perhaps taking
> > >>> > inspiration from kernel (but skipping the mutation!).
> > >>> >
> > >>> > On Mon, 16 Jan 2023, Henry Rich wrote:
> > >>> >
> > >>> >> I have never understood the zeal for having verbs return verbs, but 
> > >>> >> it
> > >>> >> must be real if some are willing to use dangerous backdoor hacks into
> > > JE
> > >>> >> to achieve it.  ARs make it possible to pass verbs around, but
> > > executing
> > >>> >> them requires dropping into explicit code.  To remedy this, I offer a
> > >>> >> proposal, backward compatible with older J:
> > >>> >>
> > >>> >> 1. (". y) and Apply (x 128!:2 y) to be modified so that if the result
> > > of
> > >>> >> execution is not a noun, it is replaced by its AR (instead of '' as
> > >>> >> previously).
> > >>> >>
> > >>> >> 2. (". y) and Apply to be modified so that if y (for ".) or x (for
> > >>> >> Apply) is boxed, the sentence is executed as usual except that each 
> > >>> >> box
> > >>> >> is converted using (box 5!:0) before being put onto the execution
> > > stack.
> > >>> >>
> > >>> >> The idea is that you can execute (".
> > >>> >> expr-producing-AR,exp-producing-AR,...) without having to get any
> > >>> >> modifiers involved.
> > >>> >>
> > >>> >> Sentence execution can produce ARs, and can take ARs created by verbs
> > > to
> > >>> >> represent verbs and modifiers.  That sounds pretty classy to me, but 
> > >>> >> I
> > >>> >> don't know whether it's first-class.
> > >>> >>
> > >>> >> Henry Rich
> > >>> >>
> > >>> >>
> > >>> >>
> > >>> >> ----------------------------------------------------------------------
> > >>> >> 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
> > > ----------------------------------------------------------------------
> > > 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