aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMarshall Lochbaum <mwlochbaum@gmail.com>2020-09-04 23:01:18 -0400
committerMarshall Lochbaum <mwlochbaum@gmail.com>2020-09-05 08:49:50 -0400
commit15bf1662b196b0a4805dd047dd09c87eb63627ae (patch)
tree13bb09bb43a28104ad197e9140e4153df07a844a /src
parent015d9cd399100427b3e82fb183c81d034f00cd8c (diff)
Allow arbitrary rank in components of Group left argument
Diffstat (limited to 'src')
-rw-r--r--src/r.bqn15
1 files changed, 8 insertions, 7 deletions
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