diff options
| author | Marshall Lochbaum <mwlochbaum@gmail.com> | 2021-01-14 20:04:47 -0500 |
|---|---|---|
| committer | Marshall Lochbaum <mwlochbaum@gmail.com> | 2021-01-14 20:51:33 -0500 |
| commit | b902b3916af8aaeb74aa728a0e0eec359d0b099b (patch) | |
| tree | 779d6c3ba37221e5b014b54df6144687bcb248cd /src | |
| parent | 9ebac7b4fc344e52a39db2082e2fa848691c9bdd (diff) | |
Handle duplicate indices in structural Under
Diffstat (limited to 'src')
| -rw-r--r-- | src/r.bqn | 15 |
1 files changed, 10 insertions, 5 deletions
@@ -176,7 +176,7 @@ _under_←{ Fail←{𝕊‿0} # 𝕎 is parent traversal; 𝕩 is current components of ind and val Trav←(IsArray 0⊑⊢)◶⟨Pair, Conform´∘⊢◶Fail‿{ - Parent←𝕎 ⋄ n←≠⊑a←⥊¨𝕩 ⋄ j←¯1 + Parent←𝕎 ⋄ n←≠0⊑a←⥊¨𝕩 ⋄ j←¯1 Child←Trav⟜(⊑¨⟜a) { j+↩1 ⋄ f←n⊸≤◶⟨𝕊˙⊸Child,Parent˙⟩j ⋄ F 0 } }⟩ @@ -189,11 +189,16 @@ _under_←{ Set1←𝕨⊸{ 𝕩↩<⍟(1-IsArray)𝕩 l←1×´s←≢𝕩 - gi←0⊸⊑⌜𝕨⋄nv←1⊸⊑⌜𝕨 - g←Cmp0 _grade_ 0 gi - P←(≠g)⊸≤◶⟨(⊑⟜g)⊑gi˙,l⟩ + i←0⊸⊑⌜𝕨 + g←Cmp0 _grade_ 0 i + v←(1⊑⊑⟜𝕨)⌜g + P←(≠g)⊸≤◶⟨(⊑⟜g)⊑i˙,l⟩ e←P j←0 - s⥊{e=𝕩}◶⟨⊑⟜(⥊𝕩),{𝕩⋄r←(j⊑g)⊑nv⋄e↩P j↩1+j⋄r}⟩⌜↕l + s⥊{e=𝕩}◶⟨⊑⟜(⥊𝕩),{𝕩 + r←j⊑v⋄e↩{𝕊∘{𝕩 + "⌾: Incompatible result elements in structural Under"!r Match j⊑v + }⍟(e=⊢)P j↩1+j}0⋄r + }⟩⌜↕l } _at_ ← {(↕≠𝕩) 𝔽⍟((𝔾𝕩)=⊣)¨ 𝕩} Set ← 0⊸{ (𝕨≥≠root)◶⟨≢⥊(1+𝕨)⊸𝕊_at_(𝕨⊑root˙)∘⥊, Set1⟩ 𝕩 } |
