[Jprogramming] Closures; WAS: Verbs returning verbs
Henry Rich
henryhrich at gmail.com
Wed Jan 18 03:11:01 UTC 2023
I don't follow any of this thread, because I don't understand what is
missing from standard J. I find J adequate for everything I want to
do. What am I missing?
I can see that if you want to write all-tacit code you have trouble if
you need to feed a verb result into a modifier.
Suppose though that I am content with writing explicit definitions.
What do I need beyond the standard language, and for what use case?
Henry Rich
On 1/17/2023 9:23 PM, Elijah Stone wrote:
> (Curried modifiers, as you say, are a solution, but, again, another
> half-solution.)
>
> On Tue, 17 Jan 2023, Raul Miller wrote:
>
>> Here, I suspect that you're only getting noun values in your closure
>> -- you'll have to sprinkle those noun references with something like
>> `:6 if you want anything else. That's probably not a huge problem.
>>
>> But, thinking about this, personally I'm not seeing a lot of
>> motivation for this approach, either. (What problems would this solve?
>> I'm sure there are some great motivating examples out there. And
>> closures certainly have a lot of popularity. But... position in a list
>> can be thought of as being conceptually analogous to a variable, so it
>> should be apparent that we already have some support for the
>> algorithmic role of closures.)
>>
>> (I should perhaps also note, here, that conjunctions and adverbs which
>> have verb results are self-currying.)
>>
>> Anyways... I'm not thinking particularly deep thoughts here -- I'm
>> just reflexively reaching for motivating examples (which might assist
>> in forming some of those sorts of thoughts).
>>
>> Thanks,
>>
>> --
>> Raul
>>
>>
>> On Tue, Jan 17, 2023 at 7:01 PM Elijah Stone <elronnd at 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
More information about the Programming
mailing list