From a4db0473afa642b1e4085295a6e306198b3c6f5d Mon Sep 17 00:00:00 2001 From: Marshall Lochbaum Date: Tue, 27 Apr 2021 13:22:36 -0400 Subject: Group-based structural Under insertion --- src/r.bqn | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) (limited to 'src') diff --git a/src/r.bqn b/src/r.bqn index eb1dc9b8..d016b3c5 100644 --- a/src/r.bqn +++ b/src/r.bqn @@ -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⟩ 𝕩 } -- cgit v1.2.3