%DEF var V←•internal.Variation ⋄ LV←•internal.ListVariations %DEF tvar %USE var ⋄ _tvar ← {F _𝕣 x: {F 𝕩 V x}¨ LV 𝕩; w F _𝕣 x: (LV 𝕨) {(𝕨 V w) F 𝕩 V x}⌜ LV 𝕩} %DEF k _k ← {𝔽○•internal.Keep} # batch checks {>0‿1‿3‿'a'‿{⇐} (≠𝕏`)⎊'e'⌜ ⟨10⥊0, 10⥊10, 10⥊1e4, 10⥊1e9, 10⥊1e20, "AAA", "⍉⍉⍉", "𝕨𝕨𝕨"⟩}¨ ⌊‿⌈‿+‿≠‿< %% ⟨5‿8⥊10‿10‿10‿10‿10‿'e'‿'e'‿'e'‿10‿10‿10‿10‿10‿'e'‿'e'‿'e'‿10‿10‿10‿10‿10‿'e'‿'e'‿'e'‿10‿10‿10‿10‿10‿'e'‿'e'‿'e'‿10‿10‿10‿10‿10‿'e'‿'e'‿'e',5‿8⥊10‿10‿10‿10‿10‿'e'‿'e'‿'e'‿10‿10‿10‿10‿10‿'e'‿'e'‿'e'‿10‿10‿10‿10‿10‿'e'‿'e'‿'e'‿10‿10‿10‿10‿10‿'e'‿'e'‿'e'‿10‿10‿10‿10‿10‿'e'‿'e'‿'e',5‿8⥊10‿10‿10‿10‿10‿'e'‿'e'‿'e'‿10‿10‿10‿10‿10‿'e'‿'e'‿'e'‿10‿10‿10‿10‿10‿'e'‿'e'‿'e'‿10‿10‿10‿'e'‿'e'‿'e'‿'e'‿'e'‿'e'‿'e'‿'e'‿'e'‿'e'‿'e'‿'e'‿'e',5‿8⥊10‿10‿10‿10‿10‿3‿3‿3‿10‿10‿10‿10‿10‿3‿3‿3‿10‿10‿10‿10‿10‿3‿3‿3‿10‿10‿10‿10‿10‿3‿3‿3‿10‿10‿10‿10‿10‿3‿3‿3,5‿8⥊10‿10‿10‿10‿10‿3‿3‿3‿10‿10‿10‿10‿10‿3‿3‿3‿10‿10‿10‿10‿10‿3‿3‿3‿10‿10‿10‿10‿10‿3‿3‿3‿'e'‿'e'‿'e'‿'e'‿'e'‿'e'‿'e'‿'e'⟩ # total array comparison %USE k ⋄ a ← 0‿@‿'a'‿∞‿¯∞‿1‿¯1∾⍷∾{⟨𝕩⥊0, 𝕩⥊1, {1⌾((¯1¨≢𝕩)⊸⊑)𝕩}⍟(0≠×´∘≢) 𝕩⥊0⟩}¨ ∾{⥊(<⟨⟩)∾⌜´𝕩⥊<↕3}¨↕4 ⋄ r←(⊑(⍋-⍒)∘⋈)_k⌜˜ a ⋄ ! r ≡ •Cmp⌜˜a ⋄ r %% '1'-˜73‿73⥊"1000202002000002222000002000000222222222222200000200000022220000002000000210222222222222222222222222222222222222222222222222222222222222222222222222122222222222222222222222222222222222222222222222222222222222222222222222001222222222222222222222222222222222222222222222222222222222222222222222000010000200000222200000200000022222222222220000020000002222000000200000020002122022020222222020222022022222222222222202022202202222220220222022020000201002000002222000002000000222222222222200000200000022220000002000000200020210200000222200000200000022222222222220000020000002222000000200000020002222122020222222020222022022222222222222202022202202222220220222022020000000001000000000000000000000000000000000000000000000000000000000000000200020220210000222200000200000022222222222220000020000002222000000200000020002222222120222222020222022022222222222222202022202202222220220222022022000202202201002222200002202000222222222222220000220200022222020002202000200022222222212222222202222220222222222222222220222222022222222202222220220002022022020122222020022022022222222222222202002202202222220220222022020000000002000001000000000000000000000000000000000000000000000000000000000000000000200000210200000200000020020020020020000020000002002000000200000000000000020000022120000020000002202202202202000002000000220200000020000000000000002000002001000000000000200000000200000000000000020000000000000000200020220220000222210000200000022222222222220000020000002222000000200000020002222222220222222120222022022222222222222202022202202222220220222022022000202202202002222201002202000222222222222220000220200022222020002202000200022222222222222222212222220222222222222222220222222022222222202222220220002022022020222222020122022022222222222222202002202202222220220222022020000000002000002002000001000000200200000200200000000000020020000000000000200020220220000222220000210000022222222222222000020000002222202000200000020002222222220222222220222122022222222222222222022202202222222220222022022000202202200002222200002201000222222222222220000220000022222020002202000200020220220200222220200220210022222222222222020022020002222202202220200020002222222222222222222222222122222222222222222222222202222222222222222022000202202202002222202002202201222222222222220200220220022222022022202202000000000200000200000000000000010000000000000000000000000000000000000000000000000020000022020000020000002102002002002000002000000200200000020000000000000002000002222000002000000221220220220200000200000022020000002000000000000000200000200200000000000020010000020000000000000002000000000000000000000000020000022020000020000002202102002202000002000000220200000020000000000000002000002222000002000000222221220222200000200000022220000002000000000000000200000200200000200000020020010020020000000000002002000000000000000000000020000022020000020000002202202102202000002000000220200000020000000000000002000002222000002000000222222221222200000200000022220000002000000000000000200000200000000000000020000000010000000000000000000000000000000000000000020000022020000020000002202002002102000002000000200200000020000000000000002000002222000002000000222220220221200000200000022020000002000000000000000200000200200000000000020020000020010000000000002000000000000000020002022022000022222000020000002222222222222100002000000222200000020000002000222222222022222222022202202222222222222221202220220222222022022202202200020220220200222220200220200022222222222222010022020002222202000220200020002222222222222222222222222022222222222222222122222202222222220222222022000202202202022222202022202202222222222222220201220220222222022022202202000000000200000200200000200000020020020020020000010000002002000000000000020002022022000022222000022000002222222222222200002100000222220200020000002000222222222022222222022222202222222222222222202221220222222222022202202200020220220000222220000220200022222222222222000022010002222202000220200020002022022020022222020022022002222222222222202002202100222220220222020002000222222222222222222222222222222222222222222222222221222222222222222202200020220220200222220200220220222222222222222020022022012222202202220220200000000020000020000000000000002000000002000000000000000100000000000000000000000002000002202000002000000220200200220200000200000021020000002000000000000000200000222200000200000022222022022220000020000002212000000200000000000000020000020020000000000002002000002002000000000000200100000000000002000202202200002222200002000000222222222222220000200000022221000002000000200022222222202222222202220220222222222222222220222022022222212202220220220002022022000022222000020000002222222222222200002000000222220100020000002000202202202002222202002202000222222222222220200220200022222021002202000200022222222222222222222222220222222222222222222222222022222222212222220220002022022020022222020022020002222222222222202002202000222220220122020000000000002000002002000002000000200200200200200000200000020020000001000000200020220220000222220000220000022222222222222000022000002222202000210000020002222222220222222220222222022222222222222222022222202222222220222122022000202202200002222200002200000222222222222220000220000022222020002201000200020220220200222220200220220022222222222222020022022002222202202220210020002222222222222222222222222222222222222222222222222222222222222222222122000202202202002222202002202200222222222222220200220220022222022022202201" !"∧: Argument cannot have rank 0" % ∧@ !"∨: Argument cannot have rank 0" % ∨@ (=⋈≡)˜{⇐} %% 1‿1 (≠⋈≢)˜{⇐} %% 0‿0 {⇐}(=⋈≡){⇐} %% 0‿0 {⇐}(≠⋈≢){⇐} %% 1‿1 # !𝕩 & 𝕨!𝕩 !"Assertion error" % !0 !"Assertion error" % !0 !"foo" % !"foo" !"foo" % "foo"!0 !"foo" % "foo"!"bar" !⎊•CurrentError 1‿+ %% ⟨1,+⟩ !⟜0⎊•CurrentError 1‿+ %% ⟨1,+⟩ !1 %% 1 "foo"!1 %% 1 # |𝕩 {| (↕10)∾𝕩}¨ -2⋆7‿15‿31 %% ⟨0‿1‿2‿3‿4‿5‿6‿7‿8‿9‿128,0‿1‿2‿3‿4‿5‿6‿7‿8‿9‿32768,0‿1‿2‿3‿4‿5‿6‿7‿8‿9‿2147483648⟩ # arith (<1)+ 1 %% <2 1 +<1 %% <2 (<1)+<1 %% <2 @-@ %% 0 !"-: Invalid character" % @-1 !"+: Unexpected argument types" % @+@ !"×: Unexpected argument types" % @×@ !"÷: Unexpected argument types" % @÷@ !"⋆: Unexpected argument types" % @⋆@ !"√: Unexpected argument types" % @√@ !"⌊: Unexpected argument types" % @⌊@ !"⌈: Unexpected argument types" % @⌈@ !"|: Unexpected argument types" % @|@ !"∧: Unexpected argument types" % @∧@ !"∨: Unexpected argument types" % @∨@ !"-: Unexpected argument types" % 0-@ !"÷: Unexpected argument types" % 0÷@ !"+: Argument must consist of numbers" % +@ !"-: Argument contained non-number" % -@ !"×: Argument contained non-number" % ×@ !"÷: Argument contained non-number" % ÷@ !"⋆: Argument contained non-number" % ⋆@ !"√: Argument contained non-number" % √@ !"⌊: Argument contained non-number" % ⌊@ !"⌈: Argument contained non-number" % ⌈@ !"|: Argument contained non-number" % |@ !"¬: Argument contained non-number" % ¬@ !"This function can't be called monadically" % ≤@ !"This function can't be called monadically" % ≥@ # 𝕨/𝕩 2‿3‿0‿1/4‿3⥊↕⋈12 %% ⋈¨6‿3⥊0‿1‿2‿0‿1‿2‿3‿4‿5‿3‿4‿5‿3‿4‿5‿9‿10‿11 2‿3‿0‿1/↕4 %% 6⥊0‿0‿1‿1‿1‿3 2‿3‿0‿1/↕⋈4 %% ⋈¨6⥊0‿0‿1‿1‿1‿3 !"Didn't expect negative integer" % 2‿¯3/↕2 !"/: Lengths of components of 𝕨 must match 𝕩 (3 ≠ 4)" % 1‿2‿3/4‿5‿6‿7 !"Didn't expect negative integer" % (4/1000‿¯1000) / 8⥊1 !"Didn't expect negative integer" % (4/1000‿¯1000) / 8⥊1 # /𝕩 !"Didn't expect negative integer" % / 4/1000‿¯1000 !"/: Argument must have rank 1 (3‿3 ≡ ≢𝕩)" % /↕3‿3 !"/: Argument must have rank 1 (⟨⟩ ≡ ≢𝕩)" % /0 ! (//⁼)⊸≡8‿15‿25‿32‿90‿101‿155‿165‿584‿594‿894‿912‿1312‿1328‿1350‿1367‿1391‿1407‿1469‿1486‿1559‿1566‿1576‿1582‿1592‿1599‿1609‿1616‿1626‿1635‿4086‿4093‿4114‿4122‿4141‿4149‿4169‿4177 # 𝕨⊏𝕩 •internal.ElType¨ {(100⥊↕2)⊏𝕨‿𝕩}⌜˜ ⟨0, 1, 2, 127, 128, 32767, 32768, ¯32767, ¯32768, ¯32769, ¯1+2⋆31, 2⋆31, @, @+1, @+255, @+256, @+1114111, {⇐}, 1‿2⟩ %% (8-(=⌜˜<⟜5)×8-⌈⌜˜) 0‿0‿1‿1‿2‿2‿3‿2‿2‿3‿3‿4‿5‿5‿5‿6‿7‿8‿8 0‿0‿0 ⊏ 1‿3⥊↕10 %% 3‿3⥊0‿1‿2 ≢¨ ⟨(2‿0‿3‿4‿5⥊1)⊏9‿8‿0‿7⥊0 ⋄ ⟨⟩⊏0‿8‿0‿7⥊0 ⋄ (2‿3‿0‿4⥊1)⊏↕10⟩ %% ⟨2‿0‿3‿4‿5‿8‿0‿7,0‿8‿0‿7,2‿3‿0‿4⟩ !"⊏: Indexing out-of-bounds" % ⊏˜(200⥊1)⥊1 !"⊏: Indexing out-of-bounds (24∊𝕨, 4‿4≡≢𝕩)" % 1‿24⊏↕4‿4 !"⊏: Indexing out-of-bounds (¯24∊𝕨, 4‿4≡≢𝕩)" % 1‿¯24⊏↕4‿4 !"𝕨⊏𝕩: 𝕨 must be an array of numbers or list of such arrays" % (1‿¯26∾@)⊏@∾↕5 !"⊏: Indexing out-of-bounds (¯26∊𝕨, ⟨5⟩≡≢𝕩)" % ¯26⊏↕5 !"Expected integer" % ¯26.5⊏↕5 !"⊏: Indexing out-of-bounds" % 1‿¯26⊏↕5 !"⊏: Indexing out-of-bounds" % 1‿26⊏↕5 !"Expected integer" % 0‿1.1‿2 ⊏ ↕10 !"⊏: Indexing out-of-bounds (1∊𝕨, 1‿3≡≢𝕩)" % 0‿0‿1 ⊏ 1‿3⥊↕10000 !"⊏: Indexing out-of-bounds (2∊𝕨, ⟨2⟩≡≢𝕩)" % (1+9=↕10)⊏⟨1‿2,3⟩ a←↕2 ⋄ ! "e" ≡ (↕10){b←a‿a‿a‿a‿a‿a‿a‿a‿a‿a ⋄ 𝕨⊏⎊"e"𝕩}⟨1‿2,3‿4⟩ ⋄ ! 0‿1 ≡ a %USE tvar ⋄ {!∘≡¨⟜⊏⥊ 1‿¯1 {t←•internal.ElType 𝕩 ⋄ r←𝕨⊏𝕩 ⋄ t≥•internal.ElType r ⋄ r}_tvar 𝕩}¨ ⟨↕2, ↕4, "hello", ⟨"ab", "cd", "ef"⟩, ↕⋈4⟩ # 𝕨⊑𝕩 !"⊑: 𝕨 contained a non-integer" % ⟨0.1⟩⊑↕3 !"⊑: 𝕨 contained a non-integer" % ⟨2⋆80⟩⊑↕3 %USE tvar ⋄ !¨ 'e'= (≍1‿2) {⟨𝕨⟩⊑𝕩}⎊'e'_tvar ↕5‿5 %USE tvar ⋄ !¨ 1‿2⊸≡¨ (1‿2) ⊑_tvar ↕5‿5 # comparison w←1‿1⥊1 ⋄ x←1‿2⥊1 ⋄ {! (∾⟨•Repr𝕩,": Expected equal shape prefix (1‿1 ≡ ≢𝕨, 1‿2 ≡ ≢𝕩)"⟩) ≡ w 𝕏⎊(•CurrentError∘@) x}¨ =‿≠‿<‿>‿≤‿≥ w←1‿1⥊1 ⋄ x←1‿2⥊1 ⋄ w‿x <¨↩ ⋄ {! (∾⟨•Repr𝕩,": Expected equal shape prefix (1‿1 ≡ ≢𝕨, 1‿2 ≡ ≢𝕩)"⟩) ≡ w 𝕏⎊(•CurrentError∘@) x}¨ =‿≠‿<‿>‿≤‿≥ w←1‿1⥊1 ⋄ x←2⥊1 ⋄ {! (∾⟨•Repr𝕩,": Expected equal shape prefix (1‿1 ≡ ≢𝕨, ⟨2⟩ ≡ ≢𝕩)"⟩) ≡ w 𝕏⎊(•CurrentError∘@) x}¨ =‿≠‿<‿>‿≤‿≥ w←1‿1⥊1 ⋄ x←2⥊1 ⋄ w‿x <¨↩ ⋄ {! (∾⟨•Repr𝕩,": Expected equal shape prefix (1‿1 ≡ ≢𝕨, ⟨2⟩ ≡ ≢𝕩)"⟩) ≡ w 𝕏⎊(•CurrentError∘@) x}¨ =‿≠‿<‿>‿≤‿≥ !"Invalid comparison" % <˜{⇐} !"Invalid comparison" % ≤˜{⇐} !"Invalid comparison" % >˜{⇐} !"Invalid comparison" % ≥˜{⇐} {! 5 (𝕏 ≡ 𝕏⌾⋈) ↕10}¨ =‿≠‿<‿>‿≤‿≥ {! (↕10) (𝕏 ≡ 𝕏⌾⋈) 5}¨ =‿≠‿<‿>‿≤‿≥ {! (↕10) (𝕏 ≡ 𝕏⌾⋈) 4⌊↕10}¨ =‿≠‿<‿>‿≤‿≥ # >𝕩 !">: Result rank too large (200 ≡ =𝕩, 205 ≡ =⊑𝕩)" % > (200⥊1)⥊<(205⥊1)⥊1 !">: Incompatible element shapes (encountered shapes ⟨2⟩ and 4‿5)" % > ↕¨⟨2, 4‿5⟩ !">: Incompatible element shapes (encountered shapes 2‿3 and ⟨4⟩)" % > ↕¨⟨2‿3, 4⟩ !">: Incompatible element shapes (encountered shapes 2‿3 and 4‿5)" % > ↕¨⟨2‿3, 4‿5⟩ !">: Incompatible element shapes (encountered shapes 2‿0 and 4‿5)" % > ↕¨⟨2‿0, 4‿5⟩ !">: Incompatible element shapes (encountered shapes ⟨0⟩ and 4‿5)" % > ↕¨⟨0, 4‿5⟩ !">: Incompatible element shapes (encountered shapes ⟨0⟩ and ⟨⟩)" % > ↕¨⟨0, ⟨⟩⟩ !">: Incompatible element shapes (encountered shapes 2‿3 and ⟨⟩)" % > ↕¨⟨2‿3, ⟨⟩⟩ !">: Incompatible element shapes (encountered shapes 4‿5 and 4‿6)" % ≢>2‿3⥊⟨4‿5⥊↕20,4‿6⥊↕1⟩ !"∾: Item trailing shapes must be equal (contained arrays with shapes ⟨2⟩ and ⟨3⟩ and later higher-rank array)" % ∾⟨1‿1, 1‿1‿1, ⟨1⟩, 2‿2⥊1⟩ !"∾: Item trailing shapes must be equal (contained arrays with shapes 1‿4 and ⟨0⟩)" % ∾⟨1‿4⥊"abcd",⟨⟩⟩ >⟨<'a',1⟩ %% 'a'‿1 >⟨1,2,<3,4,<<5⟩ %% ⟨1,2,3,4,<5⟩ ≢>0‿1⥊<2‿3⥊<"ab" %% ↕4 {a←↕3 ⋄ !'e'≡>⎊'e' ⟨a, a, ↕2, a, a⟩ ⋄ ! 1≡•internal.Refc a} {a←↕3 ⋄ > ⟨a, a, ↕3, a, a⟩ ⋄ ! 1≡•internal.Refc a} {a←(200⥊1)⥊↕3 ⋄ ! 'e'≡>⎊'e' (200⥊1)⥊⟨a, a, ↕2, a, a⟩ ⋄ ! 1≡•internal.Refc a} %USE var ⋄ a←2‿3⥊↕6 ⋄ b←2‿3⥊"abcdef" ⋄ !∘≡¨⟜⊏ ⥊ (LV a) {>1‿2‿1‿1⥊𝕨‿𝕩V¨a‿b}⌜ LV b %USE var ⋄ a←b←2‿3⥊<<˘"abcd" ⋄ !∘≡¨⟜⊏ ⥊ (LV a) {>1‿2‿1‿1⥊𝕨‿𝕩V¨a‿b}⌜ LV b %USE var ⋄ {a‿b: ! ∧´(⊏≡¨⊢)⥊ (LV a) {>1‿2‿1‿1⥊𝕨‿𝕩V¨a‿b}⌜ LV b}¨ ⟨2⥊<2‿3⥊<<˘"abcd" ⋄ ⟨2‿3⥊↕6,2‿3⥊"abcdef"⟩⟩ %USE var ⋄ {a‿b: ! ∧´(⊏≡¨⊢)⥊ (LV a) {∾𝕨‿𝕩V¨a‿b}⌜ LV b}¨ ⟨2⥊<2‿3⥊<<˘"abcd" ⋄ ⟨2‿3⥊↕6,2‿3⥊"abcdef"⟩⟩ # <𝕩 ! ⊑∘<¨⊸≡ ∾⟜- ⥊(¯2+↕5)+⌜2⋆↕40 ! ⊑∘<¨⊸≡ @+⥊¯1‿0‿1+⌜2⋆↕20 ! ⊑∘<⊸≡ {⇐} # ⋈𝕩 ! ⊑∘⋈¨⊸≡ ∾⟜- ⥊(¯2+↕5)+⌜2⋆↕40 ! ⊑∘⋈¨⊸≡ @+⥊¯1‿0‿1+⌜2⋆↕20 ! ⊑∘⋈⊸≡ {⇐} # ∾𝕩 ∾⟨"ab", 12, "de"⟩ %% ⟨'a','b',12,'d','e'⟩ !"∾: Item trailing shapes must be equal (contained arrays with shapes 3‿3 and 3‿4)" % ∾⟨↕3‿3,↕3‿4⟩ !"∾: Item trailing shapes must be equal (contained arrays with shapes ⟨2⟩ and 3‿3)" % ∾⟨1‿2,↕3‿3⟩ # 𝕨∾𝕩 !"∾: Lengths not matchable (⟨6⟩ ≡ ≢𝕨, 1‿1 ≡ ≢𝕩)" % ("abc"∾"def")∾≍"a" !"∾: Lengths not matchable (⟨6⟩ ≡ ≢𝕨, 1‿1 ≡ ≢𝕩)" % (("abc")∾"def")∾1‿1⥊1 ! (∘‿2⥊"abcdefgh") ≡ ["ab","cd"]∾["ef","gh"] ! (∘‿2⥊"abcdef") ≡ ["ab","cd"]∾"ef" ! (∘‿2⥊"abcdef") ≡ "ab"∾["cd","ef"] ! (∘‿2⥊"abcdefgh") ≡ (a←["ab","cd"])∾["ef","gh"] ⋄ •internal.Keep a ! (∘‿2⥊"abcdef") ≡ (a←["ab","cd"])∾"ef" ⋄ •internal.Keep a ! (∘‿2⥊"abcdef") ≡ "ab"∾a←["cd","ef"] ⋄ •internal.Keep a !"∾: Argument ranks must differ by 1 or less (0≡=𝕨, 2≡=𝕩)" % 1∾↕3‿3 !"∾: Argument ranks must differ by 1 or less (1≡=𝕨, 3≡=𝕩)" % 1‿2∾↕3‿3‿3 !"∾: Argument ranks must differ by 1 or less (3≡=𝕨, 1≡=𝕩)" % 1‿2∾˜↕3‿3‿3 !"∾: Lengths not matchable (3‿4 ≡ ≢𝕨, 3‿3 ≡ ≢𝕩)" % (↕3‿4)∾↕3‿3 !"∾: Lengths not matchable (2‿2 ≡ ≢𝕨, 2‿3 ≡ ≢𝕩)" % ["ab","cd"]∾["efg","hjk"] !"∾: Lengths not matchable (2‿2 ≡ ≢𝕨, ⟨3⟩ ≡ ≢𝕩)" % ["ab","cd"]∾"efg" !"∾: Lengths not matchable (⟨3⟩ ≡ ≢𝕨, 2‿2 ≡ ≢𝕩)" % "abz"∾["cd","ef"] !"∾: Lengths not matchable (2‿2 ≡ ≢𝕨, 2‿3 ≡ ≢𝕩)" % (a←["ab","cd"])∾["efg","hjk"] !"∾: Lengths not matchable (2‿2 ≡ ≢𝕨, ⟨3⟩ ≡ ≢𝕩)" % (a←["ab","cd"])∾"efg" !"∾: Lengths not matchable (⟨3⟩ ≡ ≢𝕨, 2‿2 ≡ ≢𝕩)" % "abz"∾a←["cd","ef"] # 𝕨≍𝕩 !"≍: 𝕨 and 𝕩 must have equal shapes (3‿4 ≡ ≢𝕨, 3‿3 ≡ ≢𝕩)" % (↕3‿4)≍↕3‿3 !"≍: 𝕨 and 𝕩 must have equal shapes (⟨3⟩ ≡ ≢𝕨, ⟨2⟩ ≡ ≢𝕩)" % 1‿2‿3≍1‿2 !"≍: 𝕨 and 𝕩 must have equal shapes (⟨3⟩ ≡ ≢𝕨, ⟨⟩ ≡ ≢𝕩)" % 1‿2‿3≍1 !"≍: Result rank too large" % ≍˜(255⥊1)⥊1 # ≍𝕩 !"≍: Result rank too large (255≡=𝕩)" % ≍⍟256 1 # « & » !"shift: Lengths not matchable (⟨2⟩ ≡ ≢𝕨, 3‿3 ≡ ≢𝕩)" % 1‿2»↕3‿3 !"shift: =𝕨 must be =𝕩 or ¯1+=𝕩 (0≡=𝕨, 3≡=𝕩)" % 1»↕2‿2‿2 !"shift: =𝕨 must be =𝕩 or ¯1+=𝕩 (2≡=𝕨, 1≡=𝕩)" % (↕2‿2)»1‿2 !"shift: Lengths not matchable (⟨2⟩ ≡ ≢𝕨, 3‿3 ≡ ≢𝕩)" % 1‿2«↕3‿3 !"shift: =𝕨 must be =𝕩 or ¯1+=𝕩 (0≡=𝕨, 3≡=𝕩)" % 1«↕2‿2‿2 !"shift: =𝕨 must be =𝕩 or ¯1+=𝕩 (2≡=𝕨, 1≡=𝕩)" % (↕2‿2)«1‿2 !"«: Argument cannot be a scalar" % «0 !"»: Argument cannot be a scalar" % »<0 # ⍉𝕩 %USE var ⋄ !∘≡¨⟜⊏ {⍉ 𝕩 V a}¨ LV a←2‿3‿4•rand.Range 2 %USE var ⋄ !∘≡¨⟜⊏ {⍉ 𝕩 V a}¨ LV a←⋈¨ 2‿3‿4•rand.Range 2 %USE var ⋄ !∘≡¨⟜⊏ {⍉ 𝕩 V a}¨ LV a←@+2‿3‿4•rand.Range 100 # ⌽𝕩 %USE var ⋄ {{! 𝕩 ≡ ⌽"Ai8"V⌽𝕩} 𝕩•rand.Range 2}¨ ↕1000 # ↑𝕩 & ↓𝕩 !"↑: Argument must have rank at least 1" % ↑0 !"↓: Argument must have rank at least 1" % ↓<0 # ¨ 1 {𝕊:1‿2}¨ 1 %% <1‿2 1 {𝕊:1‿2}¨<1 %% <1‿2 (<1){𝕊:1‿2}¨ 1 %% <1‿2 (<1){𝕊:1‿2}¨<1 %% <1‿2 1 1‿2¨ 1 %% <1‿2 1 1‿2¨<1 %% <1‿2 (<1)1‿2¨ 1 %% <1‿2 (<1)1‿2¨<1 %% <1‿2 !"Mapping: Expected equal shape prefix (⟨2⟩ ≡ ≢𝕨, 4‿4 ≡ ≢𝕩)" % 1‿2+¨↕4‿4 !"Mapping: Expected equal shape prefix (⟨2⟩ ≡ ≢𝕨, ⟨4⟩ ≡ ≢𝕩)" % 1‿2+¨↕4 ⊢¨ {a←𝕩 ⋄ ⥊𝕩} 2‿3⥊<"a" %% 6⥊<"a" ⊢¨ {a←𝕩 ⋄ 2‿3‿1⥊𝕩} 2‿3⥊<"a" %% 2‿3‿1⥊<"a" ⊢¨ {a←𝕩 ⋄ 2‿3‿1⥊𝕩} 6⥊<"a" %% 2‿3‿1⥊<"a" ⊢¨ {a←𝕩 ⋄ 2‿3⥊⥊𝕩} 2‿3⥊<"a" %% 2‿3⥊<"a" ⊢¨ 2‿3⥊<"a" %% 2‿3⥊<"a" # ⊔ !"⊔: ≠𝕨 must be either ≠𝕩 or one bigger (2≡≠𝕨, 3≡≠𝕩)" % 0‿0⊔↕3 # ↕𝕩 !"Expected non-negative integer" % ↕@ !"Expected non-negative integer" % ↕"hi" !"↕: Argument must be either an integer or integer list (had rank 2)" % ↕2‿2⥊1 !"↕: Result rank too large (300≡≠𝕩)" % ↕300⥊1 # 𝕨↕𝕩 !"↕: Length of 𝕨 must be at most rank of 𝕩" % 0↕0 !"↕: Length of 𝕨 must be at most rank of 𝕩" % 0‿0↕3⥊1 0‿0↕3‿3⥊1 %% 4‿4‿0‿0⥊0 1↕↕2‿3 %% 2‿1‿3⥊↕2‿3 0↕↕3 %% 4‿0⥊0 # ≡𝕩 ≡¨ ⟨⟨⟩, ↕0, ""⟩ %% 1‿1‿1 ≡↕0‿0‿0 %% 1 ≡⟨1,1‿2,1⟩ %% 2 ≡⋈⍟100 0 %% 100 ≡↕10 %% 1 ≡0 %% 0 # 𝕨⥊𝕩 !"⥊: Result rank too large" % (0∾300⥊2)⥊0 # ⊐𝕩 ⊐ ∾⟜-0‿1.5 %% 0‿1‿0‿2 # 𝕨⊒𝕩 1‿2‿2‿3‿3‿2‿2‿1⊒1‿8‿5‿5‿6‿2‿5‿3‿1‿5‿1‿2‿4‿3‿4‿3‿1‿5‿2‿3‿4‿1‿5‿2 %% 0‿8‿8‿8‿8‿1‿8‿3‿7‿8‿8‿2‿8‿4‿8‿8‿8‿8‿5‿8‿8‿8‿8‿6 # 𝕨⍋𝕩 !"⍋: 𝕨 must be sorted" % a←-¨ ∧⋈¨ ↕10 ⋄ a⍋⋈¨↕10 # 𝕨|𝕩 {x←2⥊𝕨|𝕩 ⋄ ! x •internal.EEqual 𝕨‿𝕨|𝕩‿𝕩 ⋄ ! x •internal.EEqual 𝕨|𝕩‿𝕩}⌜˜ ⍷∧∾⟜- ⟨π, ∞, 0÷0, 0.5, 0.1⟩∾(↕10)∾⥊(¯4+↕9)+⌜2⋆7‿8‿15‿31‿32 ( # %SLOW ⟨V⇐Variation, LV⇐ListVariations, CL⇐ClearRefs, EE⇐EEqual⟩←•internal tests ← ⍷∧∾⟜- ⟨π, ∞, 0÷0, 0.5, 0.1⟩∾(↕10)∾⥊(¯4+↕9)+⌜2⋆7‿8‿15‿31‿32 {w𝕊x: wl‿xl←2⥊¨w‿x w‿x ! ∧´(⊏EE¨⊢) ⥊ wl {⟨ w|(𝕩 V xl) ⋄ (𝕨 V wl)|x ⋄ (𝕨 V wl)|(𝕩 V xl) ⟩}⌜○LV xl CL@ }⌜˜ tests ) # ⍟ %USE tvar ⋄ a←¯5+↕10 ⋄ !¨ (⋈¨ 5+↕10)⊸≡¨ {1⊸+⍟𝕩 ⋈10}_tvar a %USE tvar ⋄ a←¯5+↕10 ⋄ !¨ (⋈¨ 5+↕10)⊸≡¨ {1+⍟𝕩 ⋈10}_tvar a %USE tvar ⋄ a←¯5+↕10 ⋄ !¨ (⋈¨ 5+↕10)⊸≡¨ {1+⍟(𝕩{!𝕩≡⋈10 ⋄ 𝕗}) ⋈10}_tvar a # ˘ & ⎉ ≢ (1⥊˜ 0∾203⥊2)⎉50 1⥊˜ 0∾100⥊2 %% 1‿50‿1‿203/0‿2‿0‿2 !"⎉: Result rank too large" % (1⥊˜ 0∾203⥊2)⎉49 1⥊˜ 0∾100⥊2 !"˘: Result rank too large" % ((255⥊1)⥊1)˘ 1‿2 # ` !"`: Shape of 𝕨 must match the cell of 𝕩 (2‿2 ≡ ≢𝕨, 3‿2‿3 ≡ ≢𝕩)" % (2‿2⥊1)+`↕3‿2‿3 !"`: Shape of 𝕨 must match the cell of 𝕩 (2‿2 ≡ ≢𝕨, 3‿3‿2 ≡ ≢𝕩)" % (2‿2⥊1)+`↕3‿3‿2 !"`: Shape of 𝕨 must match the cell of 𝕩 (⟨⟩ ≡ ≢𝕨, 3‿3 ≡ ≢𝕩)" % 2+`↕3‿3 # ´ !"´: Argument must be a list (3‿3 ≡ ≢𝕩)" % +´↕3‿3 !"´: 𝕩 must be a list (3‿3 ≡ ≢𝕩)" % 2+´↕3‿3 # ⌜ !"⌜: Result rank too large (200≡=𝕨, 200≡=𝕩)" % +⌜˜(200⥊1)⥊1