The dissect error on the second sentence was the fractional-pixel bug kicked around here a few weeks ago.  I pushed a fix for it & now it runs.

The error on the first sentence is an internal dissect error whose fix will not arrive until someone picks up development/maintenance of dissect.  When dissect runs on a sentence with error, it goes through the result blocks, attempting to isolate the error, and it automatically makes the selections that would display the error. The dissect failure is happening during that analysis.

Henry Rich

On 11/9/2021 3:28 PM, Jan-Pieter Jacobs wrote:
Recently, I was playing around with inverted tables, specifically (from
https://code.jsoftware.com/wiki/Essays/Inverted_Table):

ifa =: <@(>"1)@|:               NB. inverted from atoms
afi =: |:@:(<"_1@>)             NB. atoms from inverted

  x0=: ];._1 ' Smith Jones Chan Wilson Saxon Angelo Smith Wilson'

x1=: ];._1 ' John Dakota Wilson Diana Joan Roberto John John'

x2=: 0 1 0 1 1 0 0 1

x3=: 23 29 47 23 31 19 23 23

x4=: 1.25 0.97 2.11 1.25 2.8 1.11 1.25 1.25

x=: x0;x1;x2;x3;x4


It occured to me both operations afi and ifa are (or should be) actually
inverses of each other, but was baffled to find for once J did not work as
expected:

afi b. _1

<@(>"_1)@:|:

ifa

<@(>"1)@|:

x -: ifa afi x

1

x -: afi inv afi x

|domain error

| x-: afi inv afi x

<@(>"1) |: afi x

┌──────┬───────┬───────────────┬───────────────────────┬──────────────────────────────────────┐

│Smith │John │0 1 0 1 1 0 0 1│23 29 47 23 31 19 23 23│1.25 0.97 2.11 1.25
2.8 1.11 1.25 1.25│

│Jones │Dakota │ │ │ │

│Chan │Wilson │ │ │ │

│Wilson│Diana │ │ │ │

│Saxon │Joan │ │ │ │

│Angelo│Roberto│ │ │ │

│Smith │John │ │ │ │

│Wilson│John │ │ │ │

└──────┴───────┴───────────────┴───────────────────────┴──────────────────────────────────────┘

<@(>"_1) |: afi x

|domain error

| <@(>"_1)|:afi x


|: afi x

┌───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┐

│Smith │Jones │Chan │Wilson │Saxon │Angelo │Smith │Wilson │

├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤

│John │Dakota │Wilson │Diana │Joan │Roberto│John │John │

├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤

│0 │1 │0 │1 │1 │0 │0 │1 │

├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤

│23 │29 │47 │23 │31 │19 │23 │23 │

├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤

│1.25 │0.97 │2.11 │1.25 │2.8 │1.11 │1.25 │1.25 │

└───────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┘

As far as I understood, >"_1 and >"1 on a rank 2 array should be identical,
shouldn't they?


Apparently dissect also chokes on this sentence, as well as the "correct"
one:

load 'debug/dissect'

dissect '<@(>"_1) |: afi x' NB. problematic sentence

assertion failure

|assertion failure: traversedowncalcselect

| ((*/frame)>#selx)+.(*/frame)=#selx['travdowncalcselect'


Error during initial display

dissect '<@(>"1) |: afi x'

error in paint

domain error

|domain error: cd

| glrect 0 0 1 1+"1^:(-.IFQT),"2|."1 y


If not for these oddities, it looks like the inverses of afi and ifa would
be correctly derived by J, as I expected:

afi

|:@:(<"_1@>)

ifa b. _1

|:@(<"1@>)

ifa

<@(>"1)@|:

afi b. _1

<@(>"_1)@:|:


I'm curious what your take is on this.

Best regards,

Jan-Pieter
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm


--
This email has been checked for viruses by AVG.
https://www.avg.com

----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to