uCBQN/test/cases/prims.bqn
2025-07-25 11:21:06 +03:00

674 lines
55 KiB
BQN
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

%DEF var V•internal.Variation LV•internal.ListVariations CLR•internal.ClearRefs
%DEF tvar %USE var _tvar {F _𝕣 x: (CLR@) {F 𝕩 V x}¨ LV 𝕩; w F _𝕣 x: (CLR@) (LV 𝕨) {(𝕨 V w) F 𝕩 V x} LV 𝕩}
%DEF eqvar _eqvar•args
%DEF eqvarv _eqvarv_•args
%DEF evar %USE tvar _evar {ok{} r𝕨 ok𝔽{𝕊: •CurrentError@} _tvar 𝕩 {okr? !"TEST FAIL: variation didn't error"; ("TEST FAIL: varying error messages" ! 1=)r (r)!0}}
%DEF eqerr %USE eqvar _eqerr {ok{} r𝕨 ok𝔽{𝕊: •CurrentError@} 𝕩 {okr? !"TEST FAIL: case didn't error"; ("TEST FAIL: varying error messages" ! 1=)r (r)!0}}
%DEF eqall _eqall0 {r𝕩 ("TEST FAIL: eqall failed" ! r𝔽)¨ 𝕩 r} EqAll •internal.Indistinguishable _eqall0
%DEF k _k {𝔽•internal.Keep}
# batch checks
{>013'a'{} (𝕏`)'e' 100, 1010, 101e4, 101e9, 101e20, "AAA", "⍉⍉⍉", "𝕨𝕨𝕨"}¨ +< %% 581010101010'e''e''e'1010101010'e''e''e'1010101010'e''e''e''e''e''e''e''e''e''e''e''e''e''e''e''e''e''e''e',581010101010'e''e''e'1010101010'e''e''e'1010101010'e''e''e''e''e''e''e''e''e''e''e''e''e''e''e''e''e''e''e',581010101010'e''e''e'1010101010'e''e''e'1010101010'e''e''e'101010'e''e''e''e''e''e''e''e''e''e''e''e''e',5810101010103331010101010333101010101033310101010103331010101010333,581010101010333101010101033310101010103331010101010333'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'-˜7373"1000202002000002222000002000000222222222222200000200000022220000002000000210222222222222222222222222222222222222222222222222222222222222222222222222122222222222222222222222222222222222222222222222222222222222222222222222001222222222222222222222222222222222222222222222222222222222222222222222000010000200000222200000200000022222222222220000020000002222000000200000020002122022020222222020222022022222222222222202022202202222220220222022020000201002000002222000002000000222222222222200000200000022220000002000000200020210200000222200000200000022222222222220000020000002222000000200000020002222122020222222020222022022222222222222202022202202222220220222022020000000001000000000000000000000000000000000000000000000000000000000000000200020220210000222200000200000022222222222220000020000002222000000200000020002222222120222222020222022022222222222222202022202202222220220222022022000202202201002222200002202000222222222222220000220200022222020002202000200022222222212222222202222220222222222222222220222222022222222202222220220002022022020122222020022022022222222222222202002202202222220220222022020000000002000001000000000000000000000000000000000000000000000000000000000000000000200000210200000200000020020020020020000020000002002000000200000000000000020000022120000020000002202202202202000002000000220200000020000000000000002000002001000000000000200000000200000000000000020000000000000000200020220220000222210000200000022222222222220000020000002222000000200000020002222222220222222120222022022222222222222202022202202222220220222022022000202202202002222201002202000222222222222220000220200022222020002202000200022222222222222222212222220222222222222222220222222022222222202222220220002022022020222222020122022022222222222222202002202202222220220222022020000000002000002002000001000000200200000200200000000000020020000000000000200020220220000222220000210000022222222222222000020000002222202000200000020002222222220222222220222122022222222222222222022202202222222220222022022000202202200002222200002201000222222222222220000220000022222020002202000200020220220200222220200220210022222222222222020022020002222202202220200020002222222222222222222222222122222222222222222222222202222222222222222022000202202202002222202002202201222222222222220200220220022222022022202202000000000200000200000000000000010000000000000000000000000000000000000000000000000020000022020000020000002102002002002000002000000200200000020000000000000002000002222000002000000221220220220200000200000022020000002000000000000000200000200200000000000020010000020000000000000002000000000000000000000000020000022020000020000002202102002202000002000000220200000020000000000000002000002222000002000000222221220222200000200000022220000002000000000000000200000200200000200000020020010020020000000000002002000000000000000000000020000022020000020000002202202102202000002000000220200000020000000000000002000002222000002000000222222221222200000200000022220000002000000000000000200000200000000000000020000000010000000000000000000000000000000000000000020000022020000020000002202002002102000002000000200200000020000000000000002000002222000002000000222220220221200000200000022020000002000000000000000200000200200000000000020020000020010000000000002000000000000000020002022022000022222000020000002222222222222100002000000222200000020000002000222222222022222222022202202222222222222221202220220222222022022202202200020220220200222220200220200022222222222222010022020002222202000220200020002222222222222222222222222022222222222222222122222202222222220222222022000202202202022222202022202202222222222222220201220220222222022022202202000000000200000200200000200000020020020020020000010000002002000000000000020002022022000022222000022000002222222222222200002100000222220200020000002000222222222022222222022222202222222222222222202221220222222222022202202200020220220000222220000220200022222222222222000022010002222202000220200020002022022020022222020022022002222222222222202002202100222220220222020002000222222222222222222222222222222222222222222222222221222222222222222202200020220220200222220200220220222222222222222020022022012222202202220220200000000020000020000000000000002000000002000000000000000100000000000000000000000002000002202000002000000220200200220200000200000021020000002000000000000000200000222200000200000022222022022220000020000002212000000200000000000000020000020020000000000002002000002002000000000000200100000000000002000202202200002222200002000000222222222222220000200000022221000002000000200022222222202222222202220220222222222222222220222022022222212202220220220002022022000022222000020000002222222222222200002000000222220100020000002000202202202002222202002202000222222222222220200220200022222021002202000200022222222222222222222222220222222222222222222222222022222222212222220220002022022020022222020022020002222222222222202002202000222220220122020000000000002000002002000002000000200200200200200000200000020020000001000000200020220220000222220000220000022222222222222000022000002222202000210000020002222222220222222220222222022222222222222222022222202222222220222122022000202202200002222200002200000222222222222220000220000022222020002201000200020220220200222220200220220022222222222222020022022002222202202220210020002222222222222222222222222222222222222222222222222222222222222222222122000202202202002222202002202200222222222222220200220220022222022022202201"
!"∧𝕩: 𝕩 cannot have rank 0" % @
!"𝕩: 𝕩 cannot have rank 0" % @
(=)˜{} %% 11
()˜{} %% 00
{}(=){} %% 00
{}(){} %% 11
{2+}=2+, 2-, 3+ %% 100
{-+}=-+, ++, -- %% 100
{+¨}=+¨, -¨, + %% 100
{+-}=+-, ++, --, +- %% 1000
{•Type}=•Type,•BQN"•Type" %% 11
{•FChars}=•FChars,•BQN"•FChars" %% 10
=˜ +, , , {𝕩}, {𝔽𝕩}, {𝔽𝔾}, •internal.PureKeep, •internal.Keep, •Type, •FChars, •_timed, •_while_, 2+, +-, {} %% 15151150
˜ (0÷0)+, (0÷0)+ %% [11, 11]
=˜ (0÷0)+, (0÷0)+ %% [11, 11]
(0÷0)+, 2, 2, 3, (0÷0)+ %% 3
(0÷0)+, 2, 2, 3, (0÷0)+ %% 01120
(0÷0)+, 2, 2, 3, (0÷0)+ %% 00101
# comparison
w111 x121 {! ("𝕨",•Repr𝕩,"𝕩: Expected equal shape prefix (1‿1 ≡ ≢𝕨, 1‿2 ≡ ≢𝕩)") w 𝕏(•CurrentError@) x}¨ =<>
w111 x121 wx <¨ {! ("𝕨",•Repr𝕩,"𝕩: Expected equal shape prefix (1‿1 ≡ ≢𝕨, 1‿2 ≡ ≢𝕩)") w 𝕏(•CurrentError@) x}¨ =<>
w111 x21 {! ("𝕨",•Repr𝕩,"𝕩: Expected equal shape prefix (1‿1 ≡ ≢𝕨, ⟨2⟩ ≡ ≢𝕩)") w 𝕏(•CurrentError@) x}¨ =<>
w111 x21 wx <¨ {! ("𝕨",•Repr𝕩,"𝕩: Expected equal shape prefix (1‿1 ≡ ≢𝕨, ⟨2⟩ ≡ ≢𝕩)") w 𝕏(•CurrentError@) x}¨ =<>
!"Invalid comparison" % <˜{}
!"Invalid comparison" % ˜{}
!"Invalid comparison" % >˜{}
!"Invalid comparison" % ˜{}
{! 5 (𝕏 𝕏) 10}¨ =<>
{! (10) (𝕏 𝕏) 5}¨ =<>
{! (10) (𝕏 𝕏) 410}¨ =<>
# !𝕩 & 𝕨!𝕩
!"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)𝕩}¨ -271531 %% 0123456789128,012345678932768,01234567892147483648
# arith
(<1)+ 1 %% <2
1 +<1 %% <2
(<1)+<1 %% <2
@-@ %% 0
!"𝕨-𝕩: Invalid character" % @-1
{r•Repr𝕩 (!´) ("𝕨"r"𝕩: Unexpected argument types") @ 0𝕏{𝕊: •CurrentError@} @}¨ +, ×, ÷, , , , , |, , , ÷
{r•Repr𝕩 (!´) ("𝕨"r"𝕩: Unexpected argument types") 0 0𝕏{𝕊: •CurrentError@} @}¨ -, ×, ÷, , , , , |, , , ÷
{r•Repr𝕩 (!´) ("𝕨"r"𝕩: Unexpected argument types") @ 0𝕏{𝕊: •CurrentError@} 0}¨ ×, ÷, , , , , |, , , ÷
%USE var a4@ (LV a) {r•Repr𝕩 (!´) ("𝕨"r"𝕩: Unexpected argument types") @ 0𝕏{𝕊: •CurrentError@} 𝕨 V a} +, ×, ÷, , , , , |, , , ÷
%USE var a4@ (LV a) {r•Repr𝕩 (!´) ("𝕨"r"𝕩: Unexpected argument types") 0 0𝕏{𝕊: •CurrentError@} 𝕨 V a} -, ×, ÷, , , , , |, , , ÷
%USE var a40 (LV a) {r•Repr𝕩 (!´) ("𝕨"r"𝕩: Unexpected argument types") @ 0𝕏{𝕊: •CurrentError@} 𝕨 V a} ×, ÷, , , , , |, , , ÷
%USE var a4@ (LV a) {r•Repr𝕩 (!´) ("𝕨"r"𝕩: Unexpected argument types") (𝕨 V a) 0𝕏{𝕊: •CurrentError@} @} +, ×, ÷, , , , , |, , , ÷
%USE var a40 (LV a) {r•Repr𝕩 (!´) ("𝕨"r"𝕩: Unexpected argument types") (𝕨 V a) 0𝕏{𝕊: •CurrentError@} @} -, ×, ÷, , , , , |, , , ÷
%USE var a4@ (LV a) {r•Repr𝕩 (!´) ("𝕨"r"𝕩: Unexpected argument types") (𝕨 V a) 0𝕏{𝕊: •CurrentError@} 0} ×, ÷, , , , , |, , , ÷
%USE var a4@ b4@ {r•Repr f𝕩 {(!´) ("𝕨"r"𝕩: Unexpected argument types") (𝕨 V a) 0F{𝕊: •CurrentError@} 𝕩 V b}LV´ ab} +, ×, ÷, , , , , |, , , ÷
%USE var a40 b4@ {r•Repr f𝕩 {(!´) ("𝕨"r"𝕩: Unexpected argument types") (𝕨 V a) 0F{𝕊: •CurrentError@} 𝕩 V b}LV´ ab} -, ×, ÷, , , , , |, , , ÷
%USE var a4@ b40 {r•Repr f𝕩 {(!´) ("𝕨"r"𝕩: Unexpected argument types") (𝕨 V a) 0F{𝕊: •CurrentError@} 𝕩 V b}LV´ ab} ×, ÷, , , , , |, , , ÷
!"𝕨-𝕩: Unexpected argument types" % 0-@
!"𝕨÷𝕩: Unexpected argument types" % 0÷@
!"+𝕩: Argument must consist of numbers" % +@
@, "abc", 1,2,+, {} {(!´) ("𝕩: 𝕩 contained non-number"˜•Repr 𝕩) 0𝕏{𝕊: •CurrentError@} 𝕨} -×÷|¬
!"This function can't be called monadically" % @
!"This function can't be called monadically" % @
# 𝕨/𝕩
2301/4312 %% ¨6301201234534534591011
2301/4 %% 6001113
2301/4 %% ¨6001113
""/3 %% 3
!"𝕨/𝕩: Length of compound 𝕨 must be at most rank of 𝕩" % "abc"/3
!"𝕨/𝕩: Length of compound 𝕨 must be at most rank of 𝕩" % 1'a'/2
!"𝕨/𝕩: 𝕨 must consist of natural numbers" % "ab"/229
!"Expected non-negative integer, got ¯3" % 2¯3/2
!"Expected non-negative integer, got ¯3e20" % 2¯3e20/2
!"𝕨/𝕩: Lengths of components of 𝕨 must match 𝕩 (3 ≠ 4)" % 123/4567
!"Expected non-negative integer, got ¯1000" % (4/1000¯1000) / 81
!"Expected non-negative integer, got ¯1000" % (4/1000¯1000) / 81
!"Integer out of range: 4e19" % %USE evar 24e19 /_evar 2
!"𝕨/𝕩: Length of compound 𝕨 must be at most rank of 𝕩" % 1/3
!"𝕨/𝕩: Length of compound 𝕨 must be at most rank of 𝕩" % 1/<"ab"
!"𝕨/𝕩: Length of compound 𝕨 must be at most rank of 𝕩" % (<1)/<"ab"
!"𝕨/𝕩: Length of compound 𝕨 must be at most rank of 𝕩" % (<0)/<"ab"
!"𝕨/𝕩: Length of compound 𝕨 must be at most rank of 𝕩" % 10,10 / 1010
!"𝕨/𝕩: Length of compound 𝕨 must be at most rank of 𝕩" % 10,10,<0 / 101010
!"𝕨/𝕩: Simple 𝕨 must have rank 0 or 1 (2≡=𝕨)" % (214) / 4416
!"𝕨/𝕩: Compound 𝕨 must have rank at most 1" % (21<4) / 4416
!"𝕨/𝕩: Simple 𝕨 must have rank 0 or 1 (2≡=𝕨)" % (124) / 4
!"𝕨/𝕩: Compound 𝕨 must have rank at most 1" % (12<4) / 4
!"𝕨/𝕩: 𝕨 must consist of natural numbers" % 4, 123.54 / 4416
!"𝕨/𝕩: 𝕨 must consist of natural numbers" % 4, 3.5 / 4416
!"𝕨/𝕩: 𝕨 must consist of natural numbers" % (<@)/3
!"𝕨/𝕩: 𝕨 must consist of natural numbers" % (<{+})/3
!"𝕨/𝕩: 𝕨 cannot be negative" % (<¯2)/3
!"𝕨/𝕩: Lengths of components of 𝕨 must match 𝕩 (1 ≠ 3)" % ¯2/3
!"Expected non-negative integer, got ¯2" % ¯2/1
!"Out of memory" % 1,262 / 22<0
!"Out of memory" % 1,262 / 2<0
!"Out of memory" % (1e13×1000) / 1000
!"Out of memory" % (16 ¯1e9 + 260) / 16
!"Out of memory" % (4260)/4,281
4, 0, 5 / 445@ %% 6010@
4, 40, 5 / 445@ %% 6010@
102 / ¨ ["ab","cd","ef"] %% ¨ ["ab","ef","ef"]
(<102) / ¨ ["ab","cd","ef"] %% ¨ ["ab","ef","ef"]
(102) / ¨ ["ab","cd","ef"] %% ¨ ["ab","ef","ef"]
100/3020 %% 1020
100/302'a' %% 102' '
100/302<"a" %% 102<" "
(1000010)/10000020 %% 5000020
# /𝕩
!"Expected non-negative integer, got ¯1000" % / 4/1000¯1000
!"/𝕩: 𝕩 must have rank 1 (3‿3 ≡ ≢𝕩)" % /33
!"/𝕩: 𝕩 must have rank 1 (⟨⟩ ≡ ≢𝕩)" % /0
!"Expected non-negative integer, got ¯1" % %USE evar /_evar ¯1(100) 20010
!"Sum too big" % %USE evar /_evar 1e2262
!"Integer out of range: 1e20" % %USE evar /_evar 1e20(100) 20010
! (//)81525329010115516558459489491213121328135013671391140714691486155915661576158215921599160916161626163540864093411441224141414941694177
/1e412 %% 050005000
!"Expected integer, got character" % / "hello"
!"/⁼𝕩: 𝕩 cannot contain negative numbers" % %USE evar /_evar (10) ¯2 20+10
!"/⁼𝕩: 𝕩 must consist of natural numbers" % %USE evar /_evar (10) 2.2 20+10
!"/⁼𝕩: 𝕩 must consist of natural numbers" % %USE evar /_evar (10) 1e20 20+10
# 𝕨⊏𝕩
(
vals 0, 1, 2, 127, 128, 32767, 32768, ¯32767, ¯32768, ¯32769, ¯1+231, 231, @, @+1, @+255, @+256, @+1114111, {}, 12
e1 ˜ 0011223223348888888
e2 (8-(=˜<5)×8-˜) 0011223223345556788
a 1002
Variation, ListVariations, ElType •internal
{ 𝕊 v:
! e1 ElType¨ {(v Variation a) 𝕨𝕩}˜ vals
! e2 ElType¨ {(v Variation a) 𝕨𝕩}˜ vals
}¨ "i"ListVariations a
)
000 1310 %% 33012
¨ (203451)98070 08070 (23041)10 %% 20345807,0807,2304
!"𝕨⊏𝕩: Indexing out-of-bounds (0∊𝕨, 0≡≠𝕩)" % %USE evar 00 _evar 0
!"𝕨⊏𝕩: Indexing out-of-bounds (0∊𝕨, 0≡≠𝕩)" % %USE evar 00 _evar 021
!"𝕨⊏𝕩: Indexing out-of-bounds (0∊𝕨, 0≡≠𝕩)" % %USE evar [00,00] _evar 0
!"𝕨⊏𝕩: Indexing out-of-bounds (0∊𝕨, 0≡≠𝕩)" % %USE evar [00,00] _evar 001
!"𝕨⊏𝕩: Indexing out-of-bounds (0∊𝕨, 0≡≠𝕩)" % %USE evar 00 _evar 021
!"𝕨⊏𝕩: Indexing out-of-bounds (0∊𝕨, 0≡≠𝕩)" % %USE evar 00 _evar 0
!"𝕨⊏𝕩: Indexing out-of-bounds along axis 1 (0 ∊ 1⊑𝕨, 2‿0≡≢𝕩)" % %USE evar 00,00 _evar 201
!"𝕨⊏𝕩: Indexing out-of-bounds (0∊𝕨, 0≡≠𝕩)" % %USE evar 0 _evar 0
!"𝕨⊏𝕩: Indexing out-of-bounds (0∊𝕨, 0≡≠𝕩)" % %USE evar 0 _evar 0
!"𝕨⊏𝕩: Indexing out-of-bounds (1∊𝕨, 1≡≠𝕩)" % ˜(2001)1
!"𝕨⊏𝕩: Indexing out-of-bounds (24∊𝕨, 4≡≠𝕩)" % %USE evar 124 _evar 44
!"𝕨⊏𝕩: Indexing out-of-bounds (¯24∊𝕨, 4≡≠𝕩)" % %USE evar 1¯24 _evar 44
!"𝕨⊏𝕩: Indexing out-of-bounds (¯26∊𝕨, 5≡≠𝕩)" % %USE evar ¯26_evar 5
!"Expected integer, got ¯26.5" % %USE evar ¯26.5_evar 5
!"𝕨⊏𝕩: Indexing out-of-bounds (¯26∊𝕨, 5≡≠𝕩)" % %USE evar 1¯26 _evar 5
!"𝕨⊏𝕩: Indexing out-of-bounds (26∊𝕨, 5≡≠𝕩)" % %USE evar 126 _evar 5
!"Expected integer, got 1.1" % %USE evar 01.12 _evar 10
!"𝕨⊏𝕩: Indexing out-of-bounds (1∊𝕨, 1≡≠𝕩)" % %USE evar 001 _evar 1310000
!"𝕨⊏𝕩: Indexing out-of-bounds (2∊𝕨, 2≡≠𝕩)" % %USE evar (1+9=10) _evar 12,3
!"𝕨⊏𝕩: Indexing out-of-bounds (4∊𝕨, 3≡≠𝕩)" % %USE evar 14201056 _evar 101
!"𝕨⊏𝕩: Indexing out-of-bounds (¯4∊𝕨, 3≡≠𝕩)" % %USE evar (-14201056) _evar 101
!"𝕨⊏𝕩: Indexing out-of-bounds (4000∊𝕨, 1001≡≠𝕩)" % %USE evar ( 1000×14201056) _evar 1001101
!"𝕨⊏𝕩: Indexing out-of-bounds (¯4000∊𝕨, 1001≡≠𝕩)" % %USE evar (¯1000×14201056) _evar 1001101
!"𝕨⊏𝕩: Indexing out-of-bounds (3∊𝕨, 2≡≠𝕩)" % %USE evar (4) _evar "ab"
!"𝕨⊏𝕩: 𝕩 cannot be a unit" % %USE eqerr 0, _eqerr <"a", <5, <{}
!"𝕨⊏𝕩: 𝕩 cannot be an atom" % %USE eqerr 0, _eqerr 5, {}
!"Expected integer, got 1.5" % 1.5 "ab""cd"
!"𝕨⊏𝕩: Indexing out-of-bounds (10∊𝕨, 2≡≠𝕩)" % 10 "ab""cd"
{𝕩 ! 20𝕩•rand.Range 2}¨ (70)(64×12345)+¯1013060
%USE eqvar {1¯1 {r𝕨𝕩 ! 𝕩 •internal.ElType r r}_eqvar 𝕩}¨ 2, 4, "hello", "ab", "cd", "ef", 4
%USE tvar !¨ {𝕨 {𝕊:•CurrentError@} _tvar 𝕩}´¨ 01, 0 01, "?" 01, 01
a2 ! "e" (10){baaaaaaaaaa 𝕨"e"𝕩}12,34 ! 01 a
!"Expected integer, got character" % %USE eqerr @, <@ _eqerr 10, 1010100
!"Expected integer, got namespace" % %USE eqerr {}, <{} _eqerr 10, 1010100
!"Expected integer, got namespace" % %USE eqerr {}, {} _eqerr 10, 1010100
%USE eqvar (4) _eqvar 10×10 %% 3020100
%USE eqvar (40) _eqvar 403020 %% 440
%USE eqvar 100 _eqvar "ab"(01) 2 %% "baa"
!"𝕨⊏𝕩: 𝕨 must be an array of numbers or list of such (𝕨 contained character)" % %USE evar 1,¯26,@ _evar 5
!"𝕨⊏𝕩: 𝕨 must be an array of numbers or list of such (𝕨 contained both an array and number)" % %USE evar 1,¯26,@ _evar 5
!"𝕨⊏𝕩: 𝕨 must be an array of numbers or list of such (𝕨 contained both an array and number)" % %USE eqerr evar {%USE evar evar} ( 1,<1) _evar _eqerr 1010100
!"𝕨⊏𝕩: 𝕨 must be an array of numbers or list of such (𝕨 contained function)" % %USE eqerr evar {%USE evar evar} 1.5{} _evar _eqerr 10, 1010100
!"𝕨⊏𝕩: Elements of compound 𝕨 must be arrays of numbers" % %USE eqerr evar {%USE evar evar} <<<4 _evar _eqerr 10, 1010100
!"𝕨⊏𝕩: Elements of compound 𝕨 must be arrays of numbers" % %USE eqerr evar {%USE evar evar} {} _evar _eqerr 10, 1010100
!"𝕨⊏𝕩: Elements of compound 𝕨 must be arrays of numbers" % %USE eqerr evar {%USE evar evar} 4 _evar _eqerr 10, 1010100
!"𝕨⊏𝕩: 𝕨 must be an array of numbers or list of such (𝕨 contained character)" % @,@,@ 331
!"𝕨⊏𝕩: 𝕨 must be an array of numbers or list of such (𝕨 contained both an array and number)" % 2,1 10102
!"𝕨⊏𝕩: 𝕨 must be an array of numbers or list of such (𝕨 contained both an array and number)" % 2,1,@ 331
!"𝕨⊏𝕩: 𝕨 must be an array of numbers or list of such (𝕨 contained both an array and character)" % 2,@,1 331
!"𝕨⊏𝕩: 𝕨 must be an array of numbers or list of such (𝕨 contained both an array and number)" % 99, 1 10102
!"𝕨⊏𝕩: Compound 𝕨 must have rank at most 1 (1‿1 ≡ ≢𝕨)" % %USE eqerr 5 _eqerr 10, 1010100
!"𝕨⊏𝕩: Compound 𝕨 must have rank at most 1 (2‿2 ≡ ≢𝕨)" % [1,2, 3,4] 10102
!"𝕨⊏𝕩: Compound 𝕨 must not be longer than 𝕩 (2 ≡ ≠𝕨, ⟨10⟩ ≡ ≢𝕩)" % , 10
!"𝕨⊏𝕩: Compound 𝕨 must not be longer than 𝕩 (2 ≡ ≠𝕨, ⟨10⟩ ≡ ≢𝕩)" % 2,2 10
!"𝕨⊏𝕩: Compound 𝕨 must not be longer than 𝕩 (2 ≡ ≠𝕨, ⟨4⟩ ≡ ≢𝕩)" % 2,2 4
!"𝕨⊏𝕩: Indexing out-of-bounds (4∊𝕨, 4≡≠𝕩)" % 4 41
!"𝕨⊏𝕩: Indexing out-of-bounds (¯5∊𝕨, 4≡≠𝕩)" % ¯5 41
!"𝕨⊏𝕩: Indexing out-of-bounds along axis 0 (4 ∊ 0⊑𝕨, 4‿5≡≢𝕩)" % 4,0 451
!"𝕨⊏𝕩: Indexing out-of-bounds along axis 1 (¯6 ∊ 1⊑𝕨, 4‿5≡≢𝕩)" % 0,¯6 451
!"𝕨⊏𝕩: Bad index: 1.5 along axis 0" % 1.5,¯6 451
1¯1, 2232¯3¯4 24324 %% 2223212223181920151617121314212223181920151617121314
224 %% 020
,224 %% 000
,"",<222312 %% 000
34101 236 %% (3433) + 34303
, 031, 4022 222343 %% 003402340
, 031, 4022, <0 112343 %% 00340240
23, 22412¯3, <2 57332999 %% 22232 336, 282, 300, 336, 462, 408, 426, 462 + 6
<0,<1,<0 232599 %% 1011121314
<0,<1,<0,432 232599 %% 141312
<1,<2,<0,<4 232599 %% <54
!"𝕨⊏𝕩: Indexing out-of-bounds along axis 3 (4 ∊ 3⊑𝕨, 2‿2‿2‿3‿4≡≢𝕩)" % , 031, 4022, <4, 222343
({(𝕩1)0}¨ 20055) 22 0 %% ( 2551)0
({(𝕩1)0}¨ 20054) 2240 %% (4˜2541)0
!"𝕨⊏𝕩: Result rank too large" % ({(𝕩1)0}¨ 20155) 220
!"𝕨⊏𝕩: Result rank too large" % ({(𝕩1)0}¨ 20154) 2240
%USE eqvar (4) _eqvar "abcdefgh" %% "dcba"
%USE eqvar 4+5, 2+4 _eqvar 1010100 %% 544243444552535455626364657273747582838485
%USE eqvar 4+5, 2+4 _eqvar 1010100 %% 544243444552535455626364657273747582838485
%USE eqvar 4+2, 2+5 _eqvar 10103300 %% 253126127128129130131132133134135136137138139140156157158159160161162163164165166167168169170
(<3) "hello" %% "hel"
(<<4) "hello" %% <'o'
# 𝕨⊑𝕩
!"𝕨⊑𝕩: 𝕨 contained a non-integer" % 0.13
!"𝕨⊑𝕩: 𝕨 contained a non-integer" % 2803
!"𝕨⊑𝕩: Leaf arrays in 𝕨 must have rank 1 (element: (1‿2⥊1‿2))" % %USE evar (12) {𝕨𝕩}_evar 55
!"𝕨⊑𝕩: Leaf arrays in 𝕨 must have rank 1 (element: (<2))" % (<2)3
!"𝕨⊑𝕩: Leaf arrays in 𝕨 must have rank 1 (element: (<1))" % (<1)"foo""bar""baz"
%USE eqvar 12 _eqvar 55 %% 12
# >𝕩
!">𝕩: Result rank too large (200 ≡ =𝕩, 205 ≡ =⊑𝕩)" % > (2001)<(2051)1
!">𝕩: Incompatible element shapes (encountered shapes ⟨2⟩ and 4‿5)" % > ¨2, 45
!">𝕩: Incompatible element shapes (encountered shapes 2‿3 and ⟨4⟩)" % > ¨23, 4
!">𝕩: Incompatible element shapes (encountered shapes 2‿3 and 4‿5)" % > ¨23, 45
!">𝕩: Incompatible element shapes (encountered shapes 2‿0 and 4‿5)" % > ¨20, 45
!">𝕩: Incompatible element shapes (encountered shapes ⟨0⟩ and 4‿5)" % > ¨0, 45
!">𝕩: Incompatible element shapes (encountered shapes ⟨0⟩ and ⟨⟩)" % > ¨0,
!">𝕩: Incompatible element shapes (encountered shapes 2‿3 and ⟨⟩)" % > ¨23,
!">𝕩: Incompatible element shapes (encountered shapes 4‿5 and 4‿6)" % >234520,461
!"∾𝕩: Item trailing shapes must be equal (contained arrays with shapes ⟨2⟩ and ⟨3⟩ and later higher-rank array)" % 11, 111, 1, 221
!"∾𝕩: Item trailing shapes must be equal (contained arrays with shapes 1‿4 and ⟨0⟩)" % 14"abcd",
><'a',1 %% 'a'1
>1,2,<3,4,<<5 %% 1,2,3,4,<5
>01<23<"ab" %% 4
{a3 !'e'>'e' a, a, 2, a, a ! 1•internal.Refc a}
{a3 > a, a, 3, a, a ! 1•internal.Refc a}
{a(2001)3 ! 'e'>'e' (2001)a, a, 2, a, a ! 1•internal.Refc a}
%USE eqvar a236 b23"abcdef" a {>1211𝕨𝕩}_eqvar b %% 121123012345'a''b''c''d''e''f'
%USE eqvar ab23<<˘"abcd" a {>1211𝕨𝕩}_eqvar b %% 121123<<¨"abcd"
%USE eqvar {>1211𝕨𝕩}_eqvar´¨ 2<23<<˘"abcd" 236,23"abcdef" %% 121123<<¨"abcd", 121123012345'a''b''c''d''e''f'
%USE eqvar {𝕨𝕩}_eqvar´¨ 2<23<<˘"abcd" 236,23"abcdef" %% 43<<¨"abcd", 43012345'a''b''c''d''e''f'
# <𝕩
! <¨ - (¯2+5)+240
! <¨ @+¯101+220
! < {}
# ⋈𝕩
! ¨ - (¯2+5)+240
! ¨ @+¯101+220
! {}
# ∾𝕩
"ab", 12, "de" %% 'a','b',12,'d','e'
!"∾𝕩: Item trailing shapes must be equal (contained arrays with shapes 3‿3 and 3‿4)" % 33,34
!"∾𝕩: Item trailing shapes must be equal (contained arrays with shapes ⟨2⟩ and 3‿3)" % 12,33
!"∾𝕩: Item ranks along an axis can differ by at most one (contained ranks 1 and 3 along axis 0)" % 21 0¨ 023, 0
!"∾𝕩: Incompatible item shapes (contained arrays with shapes 1‿0 and 1‿0 along axis 1)" % {1𝕩0}¨ [01, 00]
!"∾𝕩: Incompatible item ranks" % 0¨ [0101, 011]
33<1030 %% 3030
33<00 %% 00
133<103<"hi" %% " "
!"∾𝕩: Empty array 𝕩 cannot have an atom fill element" % 0 %PROPER_FILLS
%%
# 𝕨∾𝕩
!"𝕨∾𝕩: Lengths not matchable (⟨6⟩ ≡ ≢𝕨, 1‿1 ≡ ≢𝕩)" % ("abc""def")"a"
!"𝕨∾𝕩: Lengths not matchable (⟨6⟩ ≡ ≢𝕨, 1‿1 ≡ ≢𝕩)" % (("abc")"def")111
! (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≡=𝕩)" % 133
!"𝕨∾𝕩: Argument ranks must differ by 1 or less (1≡=𝕨, 3≡=𝕩)" % 12333
!"𝕨∾𝕩: Argument ranks must differ by 1 or less (3≡=𝕨, 1≡=𝕩)" % 12˜333
!"𝕨∾𝕩: Lengths not matchable (3‿4 ≡ ≢𝕨, 3‿3 ≡ ≢𝕩)" % (34)33
!"𝕨∾𝕩: 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 ≡ ≢𝕩)" % (34)33
!"𝕨≍𝕩: 𝕨 and 𝕩 must have equal shapes (⟨3⟩ ≡ ≢𝕨, ⟨2⟩ ≡ ≢𝕩)" % 12312
!"𝕨≍𝕩: 𝕨 and 𝕩 must have equal shapes (⟨3⟩ ≡ ≢𝕨, ⟨⟩ ≡ ≢𝕩)" % 1231
!"𝕨≍𝕩: Result rank too large" % ˜(2551)1
# ≍𝕩
!"≍𝕩: Result rank too large (255≡=𝕩)" % 256 1
%USE eqvar 1234564 {c𝕊e: _eqvar´¨ 4c, c ({𝕩<e}¨) 0c, 1c, c} 1, 'a', 12
# « & »
!"shift: Lengths not matchable (⟨2⟩ ≡ ≢𝕨, 3‿3 ≡ ≢𝕩)" % 12»33
!"shift: =𝕨 must be =𝕩 or ¯1+=𝕩 (0≡=𝕨, 3≡=𝕩)" % 1»222
!"shift: =𝕨 must be =𝕩 or ¯1+=𝕩 (2≡=𝕨, 1≡=𝕩)" % (22)»12
!"shift: Lengths not matchable (⟨2⟩ ≡ ≢𝕨, 3‿3 ≡ ≢𝕩)" % 12«33
!"shift: =𝕨 must be =𝕩 or ¯1+=𝕩 (0≡=𝕨, 3≡=𝕩)" % 1«222
!"shift: =𝕨 must be =𝕩 or ¯1+=𝕩 (2≡=𝕨, 1≡=𝕩)" % (22)«12
!"«𝕩: 𝕩 cannot be a scalar" % «0
!"»𝕩: 𝕩 cannot be a scalar" % »<0
# ⍉𝕩
%USE eqvar _eqvar 234•rand.Range 2
%USE eqvar _eqvar ¨ 234•rand.Range 2
%USE eqvar _eqvar @+234•rand.Range 100
# ⌽𝕩
%USE var {{! 𝕩 "Ai8"V𝕩} 𝕩•rand.Range 2}¨ 1000
# 𝕨⌽𝕩
!"Integer out of range: 1e20" % %USE eqerr 1e20,1e20 _eqerr 10, 0, 000,
!"Expected integer, got NaN" % %USE eqerr 0÷0, 0÷0 _eqerr 10, 0, 000,
!"Integer out of range: ∞" % %USE eqerr , _eqerr 10, 0, 000,
!"Expected integer, got function" % %USE eqerr _eqerr 10, 0, 000,
!"Expected integer, got character" % %USE eqerr 'a' _eqerr 10, 0, 000,
!"𝕨⌽⁼𝕩: 𝕨 must consist of integers" % %USE eqerr 'a' _eqerr 10, 0, 000,
!"𝕨⌽𝕩: 𝕨 contained non-number" % %USE eqerr 3'a', 'a'3, 0'a', 'a'0 _eqerr 000,0000
!"𝕨⌽⁼𝕩: 𝕨 contained non-number" % %USE eqerr 3'a', 'a'3, 0'a', 'a'0 _eqerr 000,0000
!"Integer out of range: ∞" % %USE eqerr 3, 3, 0, 0 _eqerr 000,0000
!"𝕨⌽𝕩: 𝕨 must have rank at most 1 (1‿1 ≡ ≢𝕨)" % %USE eqerr 1 _eqerr 221, 1
!"𝕨⌽⁼𝕩: 𝕨 must have rank at most 1 (1‿1 ≡ ≢𝕨)" % %USE eqerr 1 _eqerr 221, 1
!"𝕨⌽𝕩: Length of list 𝕨 must be at most rank of 𝕩 (3 ≡ ≠𝕨, ⟨⟩ ≡ ≢𝕩⟩" % 123 1
!"𝕨⌽⁼𝕩: 𝕩 must have rank at least 1" % 123 1
!"𝕨⌽𝕩: Length of list 𝕨 must be at most rank of 𝕩 (3 ≡ ≠𝕨, ⟨3⟩ ≡ ≢𝕩⟩" % 123 3
!"𝕨⌽⁼𝕩: 𝕩 must have rank at least 1" % 1
(< {a12}).a %% 12
123 4444256 %% F{(4|𝕨+4)𝕩} 3 F2 2 F˘ 1 F 4444256
(1+1e15) 10 %% (1+9)0
(-1+1e15) 10 %% 99
b11a"hello" b 'e' 12 5 a •Hash b %% 1
# ↑𝕩 & ↓𝕩
!"↑𝕩: 𝕩 must have rank at least 1" % 0
!"↓𝕩: 𝕩 must have rank at least 1" % <0
# 𝕨↓𝕩 & 𝕨↑𝕩
•Hash¨ ¯1•internal.Squeeze 1e9˜10000, 10000 %% 1
•Hash¨ 10000•internal.Squeeze 1e9˜10000, 10000 %% 1
# ¨
%USE eqall Eqall {𝕊: 12}¨˜ 1, <1 %% <12
%USE eqall Eqall 12¨˜ 1, <1 %% <12
%USE eqall Eqall 12˙,12 {𝕨¨˜ 𝕩} 5, "hello", 5 %% 5<12
%USE eqall Eqall {𝕊:12} {𝕨¨˜ 𝕩} 5, "hello", 5 %% 5<12
!"Mapping: Expected equal shape prefix (⟨2⟩ ≡ ≢𝕨, 4‿4 ≡ ≢𝕩)" % 12+¨44
!"Mapping: Expected equal shape prefix (⟨2⟩ ≡ ≢𝕨, ⟨4⟩ ≡ ≢𝕩)" % 12+¨4
¨ {a𝕩 𝕩} 23<"a" %% 6<"a"
¨ {a𝕩 231𝕩} 23<"a" %% 231<"a"
¨ {a𝕩 231𝕩} 6<"a" %% 231<"a"
¨ {a𝕩 23𝕩} 23<"a" %% 23<"a"
¨ 23<"a" %% 23<"a"
%USE tvar {a •internal.PureKeep¨_tvar 𝕩 b ¨_tvar 𝕩 a •Repr𝕩 {𝔽¬! 𝕨 (10'e') 𝕩}¨ b}¨ 2, 0, 5, 0, "hello", ""
# ⊔
!"𝕨⊔𝕩: ≠𝕨 must be either ≠𝕩 or one bigger (2≡≠𝕨, 3≡≠𝕩)" % 003
!"Out of memory" % "a"
!"Out of memory" % 1e50"a"
# ↕𝕩
!"Expected non-negative integer, got character" % @
!"Expected non-negative integer, got character" % "hi"
!"↕𝕩: 𝕩 must be either an integer or integer list (had rank 2)" % 221
!"↕𝕩: Result rank too large (300≡≠𝕩)" % 3001
!"↕𝕩: Result too large" % 2010
!"Expected non-negative integer, got 3000.0000000000005" % 1e4×1.3-1
!"Expected non-negative integer, got ¯3000.0000000000005" % -1e4×1.3-1
!"Expected non-negative integer, got ¯10000" % -1e4
!"Out of memory" % 2e9 %USZ32
!"Out of memory" % 1e18 %USZ64
!"Integer out of range: 1e20" % 1e20
%% <0
100 %% 100
10 %% ¨ 10
{! (¨𝕩) 𝕩}¨ 01+2715
{! ((<)<´ ¨ 𝕩) 𝕩}¨ 1+ (-65646335) 0,1,11
{! ((<)<´ ¨ 𝕩) 𝕩}¨ ¨ 012 (126+7) 01 + 215
# 𝕨↕𝕩
!"𝕨↕𝕩: Length of 𝕨 must be at most rank of 𝕩" % 00
!"𝕨↕𝕩: Length of 𝕨 must be at most rank of 𝕩" % 0031
00331 %% 44000
123 %% 21323
03 %% 400
# ≡𝕩
¨ , 0, "" %% 111
000 %% 1
1,12,1 %% 2
100 0 %% 100
10 %% 1
0 %% 0
# 𝕨⥊𝕩
!"𝕨⥊𝕩: Result rank too large (301 ≡ ≠𝕨)" % (03002)0
!"Out of memory" % %USE eqerr {(𝕩2) 1.1}¨_eqerr 63-10 %USZ64
!"Out of memory" % %USE eqerr {(𝕩2) 71.1}¨_eqerr 63-10 %USZ64
1e81e81e81e85 %% 1e81e801e81e80 %USZ64
1e41e41e41e45 %% 1e41e401e41e40 %USZ32
{1e81e8𝕩1e81e80}¨ %% 1e81e801e81e80 %USZ64
{1e41e4𝕩1e41e40}¨ %% 1e41e401e41e40 %USZ32
!"𝕨⥊𝕩: 𝕨 too large" % %USE eqerr {1e81e8𝕩1e81e8"foo"}_eqerr
!"𝕨⥊𝕩: 𝕨 must be a list or unit (4 ≡ =𝕩)" % %USE eqerr 31412 _eqerr 10, 0, 4
!"𝕨⥊𝕩: Empty 𝕩 and non-empty result" % %USE eqerr 1010, 1, , 1 _eqerr 0, "", 000, 100"", 010<"hi"
!"𝕨⥊𝕩: Empty 𝕩 and non-empty result" % %USE eqvar (0) _eqvar 0
!"𝕨⥊𝕩: 𝕨 must consist of natural numbers or ∘ ⌊ ⌽ ↑ (contained namespace)" % %USE eqerr ({𝕩,𝕩,1𝕩} {}) _eqerr 0, 1, 10
!"𝕨⥊𝕩: 𝕨 must consist of natural numbers or ∘ ⌊ ⌽ ↑ (contained function)" % %USE eqerr ({𝕩,𝕩,1𝕩}{+¨}) _eqerr 0, 1, 10
!"𝕨⥊𝕩: 𝕨 must consist of natural numbers or ∘ ⌊ ⌽ ↑ (contained function)" % %USE eqerr ({𝕩,𝕩,1𝕩}•out) _eqerr 0, 1, 10
!"𝕨⥊𝕩: 𝕨 must consist of natural numbers or ∘ ⌊ ⌽ ↑ (contained ¨)" % %USE eqerr ({𝕩,𝕩,1𝕩} {¨}) _eqerr 0, 1, 10
!"𝕨⥊𝕩: 𝕨 must consist of natural numbers or ∘ ⌊ ⌽ ↑ (contained ∧)" % %USE eqerr ({𝕩,𝕩,1𝕩} {}) _eqerr 0, 1, 10
!"𝕨⥊𝕩: 𝕨 must consist of natural numbers or ∘ ⌊ ⌽ ↑ (contained 1e40)" % %USE eqerr ({𝕩,𝕩,1𝕩}1e40) _eqerr 0, 1, 10
!"𝕨⥊𝕩: 𝕨 must consist of natural numbers or ∘ ⌊ ⌽ ↑ (contained ¯10)" % %USE eqerr ({𝕩,𝕩,1𝕩} ¯10) _eqerr 0, 1, 10
!"𝕨⥊𝕩: 𝕨 must consist of natural numbers or ∘ ⌊ ⌽ ↑ (contained 10.5)" % %USE eqerr ({𝕩,𝕩,1𝕩}10.5) _eqerr 0, 1, 10
!"𝕨⥊𝕩: Shape must be exact when reshaping with ∘ (⟨42⟩ ≡ ≢𝕩, 10 is the product of non-computed axis)" % 25 42
!"𝕨⥊𝕩: Can't compute axis when the rest of the shape is empty" % %USE eqerr {4𝕨0 𝕩}_eqerr 1, 0
¨ %%
1¨ %% 1
"hello"¨ %% "hello"
!"𝕨⥊𝕩: 𝕨 contained multiple computed axes" % 1
!"𝕨⥊𝕩: 𝕨 contained multiple computed axes" % 1
%USE eqvarv 4 _eqvarv_"i" 9 %% [0123, 4567, 8000]
%USE eqvar 4 _eqvar 9 %% [0123, 4567, 8012]
%USE eqvar 4 _eqvar 9 %% [0123, 4567]
%USE eqvarv 4 _eqvarv_"i" "abcde" %% ["abcd", "e "]
%USE eqvar 4 _eqvar "abcde" %% ["abcd", "eabc"]
%USE eqvar 4 _eqvar "abcde" %% ["abcd"]
%USE eqvar 22 _eqvar 1000 %% [01,23]
# 𝕨⍷𝕩
%USE eqvar "ab" _eqvar "" %%
%USE eqvar "" _eqvar "ab" %% 111
%USE eqvar _eqvar 0 %% 1
%USE eqvar {} _eqvar 0 %%
%USE eqvar 0, 1 _eqvar 0 %%
%USE eqvar {},{} _eqvar 0 %%
%USE eqvar (0) _eqvar 10 %% 111
%USE eqvar "ab" _eqvar 05"ab" %% 040
%USE eqvar 0÷0,1,0÷0 _eqvar 0÷0,1˜ "01010000010101010"-'0' %% 150
%USE eqvar 0÷0,1,0÷0 _eqvar 4/0÷0,1˜ "01010000010101010"-'0' %% 4150
%USE eqvar [10÷0, ˜0÷0] _eqvar 1010 1130÷0 %% 990
(00)100 %% 111
10"" %% 111
(0000000)10000000 %% 11111111
(0000000)30003400 %% 31114511
!"Out of memory" % (0000000)1e9001e91e9000
'a'1 05 %% 040
"abc" 51'a' %% 500
(<"ab")<"aa", (<"ab")<"ab" %% <0,<1
{(=𝕨)=𝕩?𝕨𝕩;'e'}˜ 'a','b',<'a','b',"a","b","aa","bb" %% (88<1,<0,<1,<0,1,0,11,00,<0,<1,<0,<1,0,1,00,11,<1,<0,<1,<0,1,0,11,00,<0,<1,<0,<1,0,1,00,11,'e','e','e','e',1,0,11,00,'e','e','e','e',0,1,00,11,'e','e','e','e',,,1,0,'e','e','e','e',,,0,1)
01˜ 'a','b',<'a','b',"a","b","aa","bb",22'a' %% 99000000000000000000000000000000000000111100000111100000111100000111100000111111110
(599909101112"a") 10203004050607080101010100 %% 102030040505608121000
# ⊐𝕩
(¯1×) 01.5 %% 0102
# ⍷𝕩, ∊𝕩
2 0÷0 %% 2
200 0÷0 %% 200
2 0÷0 %% 11
200 0÷0 %% 2001
2 π %% 1
200 π %% 1
2 π %% 10
200 π %% 1199/10
40 %% 10
40 %% 1000
10000 1 %% 10 1
10000 1 %% 1 9990
04 1 %% 041
# 𝕨⊒𝕩
12233221185562531512434315234152 %% 088881837882848888588886
# 𝕨∊𝕩, 𝕨⊐𝕩, 𝕨⊒𝕩
{! ´(𝕨𝕩) = 𝕨𝕩}˜ 3100 "a⍉𝕩"1101e41e91e12"a",{}
{! ´(𝕨𝕩) = (𝕨) × 𝕨𝕩}˜ 3100 "a⍉𝕩"1101e41e91e12"a",{}
{! ´(𝕨𝕩) = (𝕨𝕩) 𝕩 𝕨}˜ 3100 "a⍉𝕩"1101e41e91e12"a",{}
# ⍋𝕩
100, 30000, 2e9, ¯100, ¯30000, ¯2e9, @+200, @+60000, @+1111111 {! a •internal.Keep 𝕨 + a •rand.Deal 𝕩} 3101001000
# 𝕨⍋𝕩
!"𝕨⍋𝕩: 𝕨 must be sorted" % a-¨ ¨ 10 a¨10
(¨)({𝕨𝕩! (𝕨𝕩) (𝕩) (𝕨)×0𝕨 •Cmp 𝕩}) 3, <3, 103, 'a', <'a', 10'a', 0÷0, 100÷0
(¨)({𝕨𝕩! (𝕨𝕩) (𝕩) (𝕨)×0𝕨 •Cmp 𝕩}) 3, <3, 103, 'a', <'a', 10'a', 0÷0, 100÷0
0 0,0÷0 %% 11
0÷0 ¯1÷0,¯3,0,1,2,1÷0,0÷0 %% 0000001
0,1 0,0÷0 %% 12
0,1,0÷0 0,0÷0 %% 13
0,0÷0 0,0÷0 %% 12
(100/0,0÷0) 0,0÷0 %% 100200
(¯5+10) 0,0÷0 %% 610
(¯5+10) 100,0÷0 %% 10610
((5)1000÷0) 10 %% 51+10
# 𝕨⍒𝕩
0 0,0÷0 %% 10
0÷0 ¯1÷0,¯3,0,1,2,1÷0,0÷0 %% 1111111
1,0 0,0÷0 %% 20
0÷0,1,0 0,0÷0 %% 31
0÷0,0 0,0÷0 %% 21
(100/0÷0,0) 0,0÷0 %% 200100
(5-10) 0,0÷0 %% 60
(5-10) 100,0÷0 %% 1060
((5)1000÷0) 10 %% 105-510
# ∧𝕩, 𝕩
"abc"3 %% (3)"abc"
"abc"3 %% (3)"abc"
"abc"3 %% (3)"abc"
"abc"3 %% "cba"210
"abc"3 %% "cba"210
"abc"3 %% "cba"210
# 𝕨|𝕩
{x2𝕨|𝕩 ! x •internal.EEqual 𝕨𝕨|𝕩𝕩 ! x •internal.EEqual 𝕨|𝕩𝕩}˜ - π, , 0÷0, 0.5, 0.1(10)(¯4+9)+278153132
(
# AS/SA/AA over types, 2-item array; %SLOW
%USE var EE•internal.EEqual
tests - π, , 0÷0, 0.5, 0.1(10)(¯4+9)+278153132
{w𝕊x:
wlxl2¨wx
wx ! ´(EE¨) wl { w|(𝕩 V xl) (𝕨 V wl)|x (𝕨 V wl)|(𝕩 V xl) }LV xl
CLR@
}˜ tests
)
(
# 1|scalar vs 1|f64arr over float exponents %SLOW
{𝕩! (1| •internal.EEqual 1|¨) - (2𝕩)×11.51000•rand.Range 0}¨ ¯1080+2110
)
# 𝕨÷𝕩
!"𝕨÷𝕩: Unexpected argument types" % 12, "ab"÷2
50"7.299999247803105e-309" {(100𝕨)÷𝕩}•ParseFloat "0.34361186623573303" %% •ParseFloat "2.1244898576334326e-308"
50"3.8863870613495216e-308" {(100𝕨)÷𝕩}•ParseFloat "0.3815327155289232" %% •ParseFloat "1.0186248526451468e-307"
# ⍟
%USE eqvar a¯5+10 {1+𝕩 10}_eqvar a %% ¨ 5+10
%USE eqvar a¯5+10 {1+𝕩 10}_eqvar a %% ¨ 5+10
%USE eqvar a¯5+10 {1+(𝕩{!𝕩10 𝕗}) 10}_eqvar a %% ¨ 5+10
!00, , "" 0 %% ,,
!"Calling a modifier" % 1+{} 0
!"⍟: 𝔾 contained non-number" % 1+1,,3 0
!"Expected integer, got 1.5" % 1+1.5 0
!"Integer out of range: 1e20" % 1+1e20 0
!"⍟: 𝔾 contained non-integer or integer was out of range" % %USE evar {1+𝕩 0}_evar 1.5
!"⍟: 𝔾 contained non-integer or integer was out of range" % %USE evar {1+𝕩 0}_evar 1e20
!"⍟: 𝔾 contained non-integer or integer was out of range" % %USE evar {1+𝕩 0}_evar 9, 1.5
!"⍟: 𝔾 contained non-integer or integer was out of range" % %USE evar {1+𝕩 0}_evar 1.5, 9
!"⍟: 𝔾 contained non-integer or integer was out of range" % %USE eqerr {1+𝕩𝕩 2}_eqerr - 263, 260
# ◶
!"𝔽◶𝕘𝕩: 𝕘 must have rank 1 when index is a number" % 1[12,34] 3
!"𝕨𝔽◶𝕘𝕩: 𝕘 must have rank 1 when index is a number" % "ab" [12,34] 3
!"𝕨𝔽◶𝕘𝕩: Index out of bounds of 𝕘" % 1 2- 3
!"𝔽◶𝕘𝕩: Index out of bounds of 𝕘" % 2- 3
!"𝕨⊑𝕩: Picking item at wrong rank (index 0‿0 in array of shape ⟨2⟩)" % +- 00 # shouldn't reference ⊑ but whatever
!"𝕨⊑𝕩: Picking item at wrong rank (index 1‿2 in array of shape ⟨3⟩)" % 1 ++- 01
10 +"ab""cd" ¯9 %% "cd"
1,2,0"ab""cd"1 @ %% "cd"1"ab"
# ˘ & ⎉
(1˜ 02032)50 1˜ 01002 %% 1501203/0202
!"⎉: Result rank too large" % (1˜ 02032)49 1˜ 01002
!"˘: Result rank too large" % ((2551)1)˘ 12
!"˘: Empty argument too large (0‿1000000000‿1000000000‿1000000000 ≡ ≢𝕩)" % 2 •internal.PureKeep˘ 01e91e91e90
!"˘: Empty argument too large (0‿1000000000‿1000000000‿1000000000 ≡ ≢𝕩)" % •internal.PureKeep˘ 01e91e91e90
!"⎉: Empty argument too large (0‿0‿1000000000‿1000000000‿1000000000 ≡ ≢𝕩)" % 2 •internal.PureKeep3 001e91e91e90
!"⎉: Empty argument too large (0‿0‿1000000000‿1000000000‿1000000000 ≡ ≢𝕩)" % •internal.PureKeep3 001e91e91e90
!"≍˘ 𝕩: Result rank too large (255≡=𝕩)" % ˘ (2551)1
!"≍⎉𝕘 𝕩: Result rank too large (255≡=𝕩)" % 100 (2551)1
!"𝔽˘: Incompatible result shapes (encountered shapes ⟨0⟩ and ⟨10⟩)" % {𝕩}˘ 410100
!"𝔽˘: Incompatible result shapes (encountered shapes ⟨0⟩ and ⟨10⟩)" % 3 {𝕩}˘ 410100
!"𝔽⎉𝕘: Incompatible result shapes (encountered shapes ⟨0⟩ and ⟨10⟩)" % {𝕩}1 410100
!"𝔽⎉𝕘: Incompatible result shapes (encountered shapes ⟨0⟩ and ⟨10⟩)" % 3 {𝕩}1 410100
# `
!"𝔽`𝕩: 𝕩 cannot have rank 0" % `0
!"𝕨𝔽`𝕩: Shape of 𝕨 must match the cell of 𝕩 (2‿2 ≡ ≢𝕨, 3‿2‿3 ≡ ≢𝕩)" % (221)+`323
!"𝕨𝔽`𝕩: Shape of 𝕨 must match the cell of 𝕩 (2‿2 ≡ ≢𝕨, 3‿3‿2 ≡ ≢𝕩)" % (221)+`332
!"𝕨𝔽`𝕩: Shape of 𝕨 must match the cell of 𝕩 (⟨⟩ ≡ ≢𝕨, 3‿3 ≡ ≢𝕩)" % 2+`33
%USE eqvar %USE k +,-,×,÷,,,,,¬,,,<,>,,=,,,, {f𝕊arr: ! ( F _k`_k arr) _k F` _eqvar arr} {𝕩˘¨𝕩} ˘¨ 1, 101
%USE eqvar %USE k +,-,×,÷,,,,,¬,,,<,>,,=,,,, {f𝕊arr: ! (1 F _k`_k arr) _k (1¨𝕩)(F`) _eqvar arr} {𝕩˘¨𝕩} ˘¨ 1, 101
# ´
!"𝔽´𝕩: 𝕩 must be a list (⟨⟩ ≡ ≢𝕩)" % +´0
!"𝔽´𝕩: 𝕩 must be a list (3‿3 ≡ ≢𝕩)" % +´33
!"𝕨𝔽´𝕩: 𝕩 must be a list (3‿3 ≡ ≢𝕩)" % 2+´33
!"𝔽´𝕩: Identity not found" % •internal.Keep´
%USE eqvar +´_eqvar 1e31e2 %% 1e5
%USE eqvar +´_eqvar 1e3100 %% 4950e1
%USE eqvar +´_eqvar 1e4-100 %% ¯4950e2
%USE eqvar +´_eqvar 1e4-1e9 %% ¯1e13
+´0 %% <0
×´0 %% <1
+´0 %% <<<0
×´0 %% <<<1
# ˝
!"𝔽˝𝕩: 𝕩 must have rank at least 1" % ˝0
!"𝔽˝𝕩: Identity not found" % •internal.Keep˝
(4)+˝7 %% 21222324
(224)+˝72228 %% 228492100108
(224)+˝2228 %% 222367
+˝ 104 %% 45 ¨ 10×4
( 4) +˝ 104 %% (4) + 45 ¨ 10×4
(<¨ 4) +˝ 104 %% (4) + 45 ¨ 10×4
(05+¨4) +˝ 104 %% ((4) + 45) ¨ 5 + 11×4
{! 1•internal.ElType 𝕏˜ "Ah"•internal.Variation 101}¨ +,-,×,÷,,,,,|,¬,,,<,>,,=,, # insert_scal relies on all pervasive dyadic builtins implicitly squeezing
# ⌜
!"𝕨𝔽⌜𝕩: Result rank too large (200≡=𝕨, 200≡=𝕩)" % +˜(2001)1
%USE eqvar (! + •internal.Keep + _eqvar)˜ 0124916
%USE eqvar (! -˜•internal.Keep -˜_eqvar)˜ 0124916
%USE eqvar (! •internal.Keep _eqvar)˜ 0124916
%USE eqvar (! •internal.Keep _eqvar)˜ 0124916
%USE eqvar (! 9•internal.Keep 9_eqvar)˜ 0124916
# ˜
5˜˝ "ab" %% 5
5˜˜ "a" %% [[5]]
5˜˝˘"ab" %% 5