There is a programming language-theoretic definition of equivalence (not restricted to functions). It is quite clever, but can be boiled down to: is there a way, within the language, to tell the difference between two values? Because j has no hard abstractions, the question of equality is rather simple, and is in fact pretty similar to u f.`'' -: v f.`''. Because--if you said u and v were equivalent, but -. u f.`'' -: v f.`'', then that is a way of distinguishing u and v, so they cannot be equivalent.

That this allows you to distinguish {{x+y}} from {{x +y}} seems not very useful (though I can imagine cases where it would be important), but consider u versus u ((2 :'u y') :(2 :'x u y')) 0. This also seems useless, but I profited from a very similar distinction in the threading routines I posted here last month.

I will add that, in a symbolic context, the name used to refer to something may have significance, which is another case in which preservation of input->output mapping is not exactly what you want to ensure; f. erases such information.

f. also erases information about the target of $:, which may mean it considers to be identical verbs which actually behave differently.

On Tue, 3 May 2022, Raul Miller wrote:

There isn't really a better way to do that test.

Conceptually, what you want is a test that determines whether two
verbs would always produce the same results for the same arguments,
but that's a problem involving infinities. It's proof territory.

That said, typically we solve this kind of problem by hand, rather
than using a test on the structure of the verb.

Good luck,

--
Raul

On Tue, May 3, 2022 at 5:20 AM Ric Sherlock <tikk...@gmail.com> wrote:

I want to test if a particular verb was provided to my adverb.
I came up with the solution below. Is there a better way?

myadverb = {{
  res=. u {:y
  if. theverb f.`'' -:  u f.`'' do.
    res=. ({.y) ,: res
  end.
  res
}}
----------------------------------------------------------------------
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