From 15bf1662b196b0a4805dd047dd09c87eb63627ae Mon Sep 17 00:00:00 2001 From: Marshall Lochbaum Date: Fri, 4 Sep 2020 23:01:18 -0400 Subject: Allow arbitrary rank in components of Group left argument --- src/r.bqn | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/r.bqn b/src/r.bqn index dbd7c6e6..89e18a5f 100644 --- a/src/r.bqn +++ b/src/r.bqn @@ -344,13 +344,14 @@ GroupInds←{ } GroupGen←{ "Group right argument must be an array" ! IsArray 𝕩 - m←1<≡𝕨 - l←m◶≠‿{"Group left argument must consist of lists"!1==𝕩⋄≠⌜𝕩}𝕨 - "Group left argument length must be at most right argument rank" ! l≤○≠≢𝕩 - "Group argument lengths must be compatible" ! ∧´l=l≠⊸↑≢𝕩 - 𝕨m◶(⊏⟜𝕩_group⊣)‿{ - ⊏⟜(𝕩⥊˜⟨×´l⟩∾(≠l)Cell𝕩)⌜ +⌜⌜´ (⌽×`⟨1⟩∾⌽1↓l) × ⊢_group⌜𝕨 - }𝕩 + 𝕨↩Pair∘ToArray⍟(2>≡)𝕨 + "Compound group left argument must be a list" ! 1==𝕨 + n←+´=⌜𝕨 + "Group left argument total rank must be at most right argument rank" ! n≤=𝕩 + "Group argument lengths must be compatible" ! ∧´(Join≢⌜𝕨)=n↑≢𝕩 + l←≠⌜𝕨↩⥊⌜𝕨 + S←⊏⟜(𝕩⥊˜⟨×´l⟩∾n Cell 𝕩) + (1≠≠)◶(S _group 0⊸⊑)‿(S⌜ ·+⌜⌜´ (⌽×`⟨1⟩∾⌽1↓l) × ⊢_group⌜) 𝕨 } ∾ ↩ Join ⊘ JoinTo -- cgit v1.2.3