aboutsummaryrefslogtreecommitdiff
path: root/spec
diff options
context:
space:
mode:
authorMarshall Lochbaum <mwlochbaum@gmail.com>2021-11-05 19:51:40 -0400
committerMarshall Lochbaum <mwlochbaum@gmail.com>2021-11-05 19:51:43 -0400
commit46ff6e3b81d398a25e7a5992ced8cebb2ad05433 (patch)
treece53de7b38010d65f3a328cf220b7f5dbad908fc /spec
parenta0bec0cf4d5d0ec9d9ebf0a4ce237f2266982cea (diff)
Extend reference implementation for Join to allow omitted axes
Diffstat (limited to 'spec')
-rw-r--r--spec/reference.bqn17
1 files changed, 9 insertions, 8 deletions
diff --git a/spec/reference.bqn b/spec/reference.bqn
index 56ee7318..8d872dad 100644
--- a/spec/reference.bqn
+++ b/spec/reference.bqn
@@ -378,16 +378,17 @@ Replicate ← {0<=𝕨}◶(⥊˜⟜≠Rep⊢)‿{!𝕨=○≠𝕩⋄𝕨Rep𝕩}
{ Identity ↩ 𝕨˙⊸=◶Identity‿𝕩 }´¨ ⟨ ∨‿0 , ∧‿1 ⟩
Join←(0<=)◶{!IsArray𝕩⋄>𝕩}‿{
- C←(<⟨⟩)⥊⊸∾⌜´⊢ # Cartesian array product
! IsArray 𝕩
s←≢¨𝕩
- d←≠⊑s
- ! ∧´⥊d=≠¨s
- ! d≥=𝕩
- l←(≢𝕩){(𝕩⊑⟜≢a⊑˜(j=𝕩)⊸×)¨↕𝕨}¨j←↕r←=a←𝕩
- ! (r↑¨s)≡C l
- i←C{p←+´¨↑𝕩⋄(↕⊑⌽p)-𝕩/¯1↓p}¨l
- >i<¨⊸⊏¨l/𝕩
+ a←(≢𝕩){(s⊑˜(j=𝕩)⊸×)¨↕𝕨}¨j←↕r←=𝕩
+ h←(¬⟜(⌈´)≠¨)¨a
+ ! ∧´∧´¨0≤h
+ o←+`⊑¨h
+ t←(¯1⊑o)↓⊑s
+ l←h{𝕎𝕩}¨˜(»o){⊣◶⟨1,𝕨⊸⊑⟩¨⟜𝕩}¨a
+ ! s≡(<t)∾⌜´h⥊¨¨l
+ i←(<⟨⟩)∾⌜´h{((↕¯1⊸⊑)-𝕩/𝕨⥊¨»)+`𝕩}¨l
+ >i<¨⊸⊏⍟(0<≠∘⊣)¨l/𝕩
}⍟(0<≠∘⥊)
Group←{