diff options
| author | Marshall Lochbaum <mwlochbaum@gmail.com> | 2021-04-27 13:22:36 -0400 |
|---|---|---|
| committer | Marshall Lochbaum <mwlochbaum@gmail.com> | 2021-04-27 13:22:36 -0400 |
| commit | a4db0473afa642b1e4085295a6e306198b3c6f5d (patch) | |
| tree | 5295726d78cd930fd9e6af16b7b620bbd61c5d70 /src | |
| parent | dbec100d95caea139507c458dffc8aa80b9285e8 (diff) | |
Group-based structural Under insertion
Diffstat (limited to 'src')
| -rw-r--r-- | src/r.bqn | 18 |
1 files changed, 7 insertions, 11 deletions
@@ -323,18 +323,14 @@ _under_←{ }⍟(1-IsStructErr∘⊢) Struct←{ Set1←𝕨⊸{ - 𝕩↩<⍟(1-IsArray)𝕩 - l←1×´s←≢𝕩 + 𝕩↩ToArray𝕩 + s←≢𝕩⋄l←≠d←⥊𝕩 i←0⊸⊑⌜𝕨 - g←Cmp0 _grade_ 0 i - v←(1⊑⊑⟜𝕨)⌜g - P←(≠g)⊸≤◶⟨(⊑⟜g)⊑i˙,l⟩ - e←P j←0 - s⥊{e=𝕩}◶⟨⊑⟜(⥊𝕩),{𝕩 - r←j⊑v⋄e↩{𝕊∘{𝕩 - "⌾: Incompatible result elements in structural Under"!r Match j⊑v - }⍟(e=⊢)P j↩1+j}0⋄r - }⟩⌜↕l + gl←l GroupLen i ⋄ g←gl GroupOrd i + Sel←1⊑𝕨⊑˜⊑⟜g + j←0⋄Adv←Sel{(j+↩𝕩)-1} + CM←"⌾: Incompatible result elements in structural Under"!Match⟜Sel + s⥊2⊸⌊◶⟨⊑⟜d,Adv,Adv{(𝕨CM(j-𝕩)⊸+)⌜↕𝕩-1⋄𝕨}⊢⟩⟜(⊑⟜gl)⌜↕l } _at_ ← {𝔽⍟((𝔾𝕩)=⊣)⟜(⊑⟜𝕩)⌜ ↕≠𝕩} Set ← 0⊸{ (𝕨≥≠root)◶⟨≢⥊(1+𝕨)⊸𝕊_at_(𝕨⊑root˙)∘⥊, Set1⟩ 𝕩 } |
