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