trusted
83
edits
m (→Empty frame agreement: align comments) |
(→Model: fix rank / frame asymmetries) |
||
Line 130: | Line 130: | ||
<syntaxhighlight lang=apl> | <syntaxhighlight lang=apl> | ||
_FA_←{ | _FA_←{ | ||
assert←{0≡⍵:' | assert←{0≡⍵:'no common frame prefix' ⎕SIGNAL 4 ⋄ ⍵} | ||
r←1↓⌽3⍴⌽⍵⍵ ⋄ pp←≢¨p←⍴¨⍺⍵ ⍝ dyadic ranks, array ranks | |||
c←r{⍺≥0:⍺⌊⍵ ⋄ ⍵≤∣⍺:0⌈⍺+⍵ ⋄ ⍺+⍵}¨pp ⍝ cell ranks | |||
fl fr←(-c)↓¨p ⍝ frames | |||
k←{⍬≡⍵:99 ⋄ -≢⍵} | s←fl{⍺<⍥≢⍵:⍺ ⋄ ⍵}fr ⍝ shorter frame | ||
assert ⍺∧⍥( | k←{⍬≡⍵:99 ⋄ -≢⍵}s ⍝ relative rank | ||
⍺ | assert ⍺∧⍥(s≡(≢s)↑⍴)⍵: ⍝ do frames agree? | ||
⍺ ⍺⍺⍤c⍤k⊢⍵ | |||
} | } | ||
⎕IO←0 | |||
x←⍳2 | |||
y←2 3 2⍴⍳12 | |||
x+_FA_ 0 1⊢y | |||
0 1 | 0 1 | ||
2 3 | 2 3 |