aboutsummaryrefslogtreecommitdiff
path: root/test/prim.bqn
diff options
context:
space:
mode:
Diffstat (limited to 'test/prim.bqn')
-rw-r--r--test/prim.bqn311
1 files changed, 311 insertions, 0 deletions
diff --git a/test/prim.bqn b/test/prim.bqn
new file mode 100644
index 00000000..bf455944
--- /dev/null
+++ b/test/prim.bqn
@@ -0,0 +1,311 @@
+# Tests of primitive functionality
+# Ordering matches the reference implementations
+
+•←/¬⟨
+ # LAYER 0
+ # [0,34)
+ 0≡¯2+2
+ 1e4≡5e3+5e3
+ ¯∞≡1e6-∞
+ 4≡-¯4
+ ¯∞≡-∞
+ ∞≡-¯∞
+ 4≡9-5
+ 1.5≡3×0.5
+ 4≡÷0.25
+ ∞≡÷0
+ 0≡÷∞
+ 1≡⋆0
+ ¯1≡¯1⋆5
+ 1≡¯1⋆¯6
+ 3≡⌊3.9
+ ¯4≡⌊¯3.9
+ ∞≡⌊∞
+ ¯∞≡⌊¯∞
+ ¯1e30≡⌊¯1e30
+ 1≡1=1
+ 0≡¯1=∞
+ 1≡1≤1
+ 1≡¯∞≤¯1e3
+ 0≡∞≤¯∞
+ ⟨⟩≡≢<2
+ ⟨3⟩≡≢"abc"
+ ⟨2,3⟩≡≢>"abc"‿"fed"
+ ⟨2,3,4,5⟩≡≢2‿3‿4‿5⥊↕120
+ ⟨6⟩≡≢⥊>"abc"‿"fed"
+ "abc"≡0⊑"abc"‿"de"
+ "de"≡1⊑"abc"‿"de"
+ ⟨⟩≡↕0
+ ⟨0⟩≡↕1
+ ⟨0,1,2,3,4,5,6⟩≡↕7
+
+ # LAYER 1
+ # [34,56)
+ 3≡4>◶+‿-1
+ 3≡4⊢◶+‿-1
+ 3≡4 1◶+‿-1
+ 5≡4<◶+‿-1
+ 5≡4 0◶+‿-1
+ 1≡-⊘0 ¯1
+ 1≡¯1-⊘+2
+ "abc"≡⊢"abc"
+ ""≡3⊢""
+ ⟨⟩≡⊣⟨⟩
+ "ab"≡"ab"⊣⟨⟩
+ 4≡+˜2
+ 3≡1-˜4
+ 1≡-∘ׯ6
+ ¯6≡2-∘×3
+ 1≡-○ׯ7
+ 2≡5-○ׯ7
+ ¯20≡1⊸-⊸×5
+ (0‿2+⌜0‿1)≡(>⟨"ab","cd"⟩)≢⊸⥊↕4
+ 20≡×⟜(-⟜1)5
+ 4≡5+⟜ׯ3
+ 7≡5+⟜2 ¯3
+ # [56,95)
+ 2≡√4
+ 3≡3√27
+ 6≡2∧3
+ 0≡¯2∧0
+ 0.75≡∨˜0.5
+ 1.75≡2∨0.25
+ 0≡¬1
+ 1≡¬0
+ 2≡¬¯1
+ 0≡3¬4
+ 2≡4¬3
+ 4≡5¬2
+ 0≡|0
+ 5≡|¯5
+ 6≡|6
+ ∞≡|¯∞
+ 2≡3|8
+ 2≡3|¯7
+ ¯1≡¯3|8
+ "a"≡⥊<'a'
+ "abcd"≡⊑<"abcd"
+ ⟨⟩≡≢<⟨2,⟨3,4⟩⟩
+ 0≡4<2
+ 0≡5>5
+ 0≡3≥4
+ 0≡≠""
+ 1≡≠"a"
+ 1≡≠'a'
+ 2≡≠"ab"
+ 25≡≠↕25
+ 1≡×5
+ ¯1≡ׯ2.5
+ 3≡3⌊4
+ ¯3≡¯3⌊∞
+ 4≡3⌈4
+ 1≡1⌈¯1
+ 5≡⌈4.01
+ ⟨⟩≡≢'a'
+ ⟨⟩≡≢0
+ # [95,104)
+ ⟨0⟩‿⟨1⟩‿⟨2⟩≡⥊¨↕3
+ (↕6)≡⟜(≠¨)○(2‿3⊸⥊)⟨⟩‿"a"‿"ab"‿"abc"‿"abcd"‿"abcde"‿"abcdef"
+ ≡⟜(≠¨)4‿0‿2⥊↕0
+ 6≡+´↕4
+ (⊑≡⊣´)"a"‿2‿(3‿"d")
+ 0(⊑≡⊣´)"a"‿2‿(3‿"d")
+ (2⊸⊑≡⊢´)"a"‿2‿(3‿"d")
+ 2(⊣≡⊢´)"a"‿2‿(3‿"d")
+ 7‿10≡+¨´⟨⟨2,3⟩,⟨5,7⟩⟩
+
+ # LAYER 2
+ # [104,117)
+ ⟨⟩≡⟨⟩∾""
+ "a"≡⟨⟩∾"a"
+ "a"≡"a"∾⟨⟩
+ "aBCD"≡"a"∾"BCD"
+ ((+⌜˜≠¨)≡(≠¨∾⌜˜))""‿⟨2,3⟩‿"abcde"
+ (⥊⟜(↕×´)≡(×⟜4)⊸(+⌜)○↕´)3‿4
+ (⥊⟜(↕×´)≡(×⟜4)⊸(+⌜)○↕´)0‿4
+ (3‿2‿0⥊"")≡(3‿2⥊↕6)+⌜""
+ (<<2)≡<¨2
+ ⟨1,⟨3,2,2‿2⥊⟨1,0,2,0⟩⟩,⟨5,4⟩⟩≡-⟨-1,⟨-3,-2,-¨2‿2⥊⟨1,0,2,0⟩⟩,⟨-5,-4⟩⟩
+ 3(+¨≡+⌜)↕6
+ 3‿4‿5‿6‿6≡{F:F⍟(×≡)⊸∾⟜⥊´𝕩}⟨2,1⟩+⟨⟨⟨⟨1,2⟩,3⟩,4⟩,5⟩
+ (=¨⟜(⥊⟜(↕×´)3‿4)≡(↕4)=⌜˜4|⊢)1‿6‿8
+
+ # LAYER 3
+ # [117,152)
+ 2≡⊑⟨2⟩
+ "ab"≡⊑⟨"ab"⟩
+ 0≡⊑↕20
+ 4≡⊑3‿2‿1⥊4⥊⊸∾5⥊0
+ 'c'≡2⊑"abcd"
+ 'c'≡¯2⊑"abcd"
+ 7≡7⊑↕10
+ 21≡2‿¯3⊑(10×↕3)+⌜↕4
+ 21‿12‿03≡⟨2‿¯3,1‿2,0‿¯1⟩⊑(10×↕3)+⌜↕4
+ "dfeb"≡(⥊¨-⟨3,1,2,5⟩)⊑"abcdef"
+ "abc"≡⟨⟩⊑<"abc"
+ ⟨7,7‿7,7⟩≡⟨⟨⟩,⟨⟨⟩,⟨⟩⟩,⟨⟩⟩⊑<7
+ ⟨7,⟨7,<7⟩⟩≡⟨⟨⟩,⟨⟨⟩,<⟨⟩⟩⟩⊑7
+ "abcfab"≡⥊(↕2‿3)⊑5‿5⥊"abcdef"
+ "aedcaf"≡⥊(-↕2‿3)⊑5‿5⥊"abcdef"
+ (<6⥊0)(⊑≡<∘⊑∘⊢)(6⥊1)⥊5
+ ¯6≡1‿0◶(2‿2⥊0‿0‿-‿0)6
+ ⟨3⟩≡⥊3
+ ⟨3,3,3⟩≡3⥊3
+ 6(⊢⌜≡∾○≢⥊⊢)○↕3
+ (<≡↕)⟨⟩
+ (↕∘⥊≡⥊¨∘↕)9
+ ¬'a'≡<'a'
+ ¬"a"≡≍"a"
+ ¬⟨1,2,⟨4,4⟩,5⟩≡○(2‿2⊸⥊)⟨1,2,⟨3,4⟩,5⟩
+ ¬2‿3‿4≡2‿3
+ ¬1.001≡1.002
+ 'a'≢2
+ 0≡≡'a'
+ 1≡≡↕6
+ 2≡≡↕2‿4
+ 3≡≡<<<4
+ (1¨≡-○≡˜⟜↕¨)⟨0,⟨⟩,⟨1⟩,2,⟨3,4⟩⟩
+ 2≡≡⟨5,⟨'c',+,2⟩⟩
+ 0≡≡⊑⟨-⟩
+
+ # LAYER 4
+ # [152,183)
+ ≡⟜><'a'
+ ≡⟜><∞
+ ≡⟜>↕5
+ ≡⟜>5‿3⥊2
+ 2‿3‿2≡≢>↕2‿3
+ ((4⥊2)⊸⥊≡(>2‿2⥊·<2‿2⥊⊢))"abcd"
+ (⊢≡>∘<)5‿3⥊↕15
+ (⊢≡(><¨))5‿3⥊↕15
+ (⥊≡≍)'a'
+ (⥊≡≍)<'a'
+ (1‿2⊸⥊≡≍)"ab"
+ 1‿2≡1≍2
+ 2‿1(≍≡2‿2⥊∾)4‿3
+ (≍⟜<≡≍˜)'a'
+ (≍˘˜⥊˘1‿5‿9)≡⌽⎉2⊸+⥊⟜(↕×´)3‿2‿1
+ (↕4)(×⌜≡×⎉0‿2)↕5
+ (↕4)(⋆˜⌜˜≡⋆⎉∞‿¯4)↕5
+ (⟨2⟩⊸∾⍟(2‿2⥊0‿1‿1‿1)2‿3)≡≢¨≍⎉(⌊○=)⌜˜⟨↕3,2‿3⥊↕6⟩
+ (2=⌜○↕3)≡(2‿4⥊"abc")≡⎉1(2‿3‿4⥊"abc")
+ ⟨0,0⟩≡(2‿4⥊"abc")≡⎉¯1(2‿3‿4⥊"abc")
+ ⟨5,⟨15,1⟩⟩≡+´⚇1⟨⟨3,2⟩,⟨⟨4,5,6⟩,⟨1⟩⟩⟩
+ 5‿6‿15≡∾´+´⚇1⟨⟨0,1⟩,⟨⟨⟩⟩⟩⥊⊸∾⚇¯2‿1⟨⟨2,3⟩,⟨4,5,6⟩⟩
+ 4≡2+⍟¯1 6
+ (2×↕7)≡2+⍟(¯3+↕7)6
+ (3⌊↕5)≡{i←0⋄r←{i+↩1⋄1+𝕩}⍟(↕4)𝕩⋄r∾i}0
+ (+⌜˜≡·>1+⍟⊢⊢)↕5
+ 0‿1‿3‿6‿10≡+`↕5
+ (-0‿1‿3‿6‿10)≡-`↕5
+ ((0∾¨↕3)≍3⥊0)≡≡`↕2‿3
+ ⟨⟩≡×`⟨⟩
+ ≡⟜(!∘0`)3‿0‿2⥊""
+
+ # LAYER 5
+ # [183,230)
+ (<'a')≡⊏"abc"
+ "a"≡⊏⥊˘"abc"
+ (<'c')≡2⊏"abc"
+ (<'c')≡¯1⊏"abc"
+ "ccc"≡2‿¯1‿2⊏"abc"
+ ((3-˜↕5)⊸⊏≡2⊸⌽)↕5‿2
+ (0‿3⥊0)≡⟨⟩⊏2‿3⥊↕6
+ ⟨3‿0,2‿1‿2⟩(×⟜5⊸+⌜´∘⊣≡⊏)⥊⟜(↕×´)6‿5
+ (2‿0⥊0)≡⟨3‿¯1,⟨⟩⟩⊏4‿3⥊0
+ 5‿1(<⊸⊏≡⊏)↕6‿2
+ ⟨4‿0,1‿2‿3‿2‿1‿0⟩(+⌜´⊸(×⌜)≡⊏⟜(×⌜˜))+⌜˜↕5
+ "abc"≡3↑"abce"
+ "e"≡¯1↑"abce"
+ ""≡0↑"ab"
+ (<⟜3⊸×↕5)≡5↑↕3
+ (6⥊0)≡¯6↑↕0
+ (≍↕3)≡1↑2‿3⥊↕6
+ (↑⟜4≡⥊⟜0)↕3
+ (≍"abc")≡1↑2‿3↑"abcd"
+ (6⥊1)(↑≡⥊⟜⊑)2‿3⥊↕6
+ (↕¨∘↕∘(1⊸+)≡↑∘↕)5
+ (↑≡((↕4)≍¨2)⥊¨<)3‿2⥊"abcdef"
+ "d"≡3↓"abcd"
+ 1‿2≡⟜(¯3⊸↓)○↕4‿2
+ 1‿1‿3‿2‿1≡≢(5⥊0)↓↕3‿2‿1
+ (↓∘↕≡↕∘(1⊸+)+⟜⌽↑∘↕)5
+ (↕3‿4)≡1↓¨⊏↕2‿3‿4
+ (4+⌜○↕2)≡2↕↕5
+ ⟨⟩(↕≡⊢)4‿3⥊"abcd"
+ (0⊸↕≡(0≍˜1+≠)⊸⥊)↕6
+ (7↕6‿0⥊"")≡0‿7‿0⥊""
+ ≡⟜⌽⟨⟩
+ ≡⟜⌽"a"
+ "ba"≡⟜⌽"ab"
+ (⌽≡(1-˜≠)(-○⊑∾1↓⊢)⚇1⊢)↕3‿2‿4
+ ≡⟜⌽↕↕3
+ ∧´5(⌽≡⊢)¨⟨"",⥊∞,↕5,↕0‿4,2‿0‿3⥊""⟩
+ ∧´("bcdea"≡⌽⟜"abcde")¨1+5ׯ10‿¯2‿¯1‿0‿1‿6‿61
+ ∧´⟨1,0‿2,¯1‿1‿3⟩(⊑∘⌽≡(3⊸↑)⊸⊑)⚇¯1‿∞ 2‿3‿5⥊"abcdef"
+ ⟨⟩(⌽≡⊢)'a'
+ 0‿4≡/1‿0‿0‿0‿1‿0
+ 1‿1‿2≡/0‿2‿1
+ ≡⟜/⟨⟩
+ "aabbcc"≡2/"abc"
+ 3‿3‿3‿2‿2‿1≡/˜3‿2‿1
+ (≍1∾¨1‿2‿2)≡(↕¨/↕)2‿3
+ ⟨⟩(/≡⊢)≍"ab"
+
+ # LAYER 6
+ # [230,270)
+ ≡⟜(∾⥊¨)"abc"
+ (∾´≡∾)"ab"‿"cde"‿""
+ 1‿2‿3‿4‿6‿9≡∾(⊢×≠↑↓)1+↕3
+ ≡⟜∾⟨⟩
+ ⟨1‿4,⥊2⟩((∾⋆⌜⌜)≡⋆⌜○∾)⟨2‿3‿4,⟨⟩,⥊5⟩
+ "abcd"≡"abc"∾'d'
+ "abcd"≡"abc"∾<'d'
+ (↕4‿3)≡(↕3‿3)∾3∾¨↕3
+ (∾˜≡·¯1⊸(×´∘↓∾↑)∘≢⊸⥊≍˜)2‿3⥊"abcdef"
+ (∾´≡∾)⟨3‿2‿1,0‿2‿1⟩⥊¨<↕6
+ ⟨1‿2,⥊0,⥊3⟩≡⊔1‿0‿0‿2
+ 4‿3‿2(≍○<≡·(≠¨≍○<∾)/⊸⊔)"abcdefghi"
+ ⟨⟩≡(3⥊¯1)⊔"abc"
+ (≍˘1‿1‿4<∘⥊⎉1 16‿4+⌜↕4)≡2↓⟨3‿2,¯1‿0‿¯1⟩⊔2‿3‿4⥊↕24
+ ⥊⚇0⊸≡○⊔⟜(⥊<)1‿2‿2‿¯1‿0
+ (⊔≡·≍⍟2∘<·∾⌜´/∘(0⊸=)¨)⟨0‿¯1‿0‿0,¯1‿0‿0⟩
+ 2‿0‿4≡"abcd"⊐"cae"
+ ⟨1⟩≡"abcd"⊐"b"
+ (<3)≡⊐⟜(3⊸⊏)"abcd"
+ (5⌊3+↕5)≡⊐⟜(3‿0‿0+⚇1⊢)↕5‿2‿1
+ 1‿0‿0‿1≡"acef"∊"adf"
+ (∊⟜(↕2)≡<⟜2)3⋆⌜○↕5
+ (<1)≡3‿4‿5∊4+⌜○↕3
+ ('0'≠"11010001")≡∊"abacbacd"
+ (↑⟜1≡⟜∊⥊⟜∞)9
+ (⥊⟜1≡∊∘↕)6
+ ≡⟜∊⟨⟩
+ ≡○∊⟜(≍˜˘)"abcadbba"
+ ≡⟜⍷⟨⟩
+ "ba"≡⍷"baa"
+ 0‿1‿0‿0≡"abc"⍷"aabcba"
+ (0‿1≍0‿0)≡(1‿2≍4‿5)⍷3‿3⥊↕9
+ (⌽¨≡⍉)↕2⥊3
+ ∧´⍉⊸≡¨⟨'a',<'a',"a","abc",""⟩
+ (↕4)(-˜⌜˜≡·⍉-⌜)↕3‿2
+ (2×↕3)≡0‿0⍉6+⌜○↕3
+ ⟨⟩(⍉≡⊢)<4
+ (2‿0‿1⥊⟨⟩)≡1‿2‿0‿1⍉↕↕4
+ 2‿0‿3‿1‿4≡⍋"bdace"
+ 5‿2‿4‿3‿0‿1≡⍋↓"deabb"
+ (⍋≡⍒)⟨"",↕0,0↑<"abc"⟩
+ (⍒≡⌽∘↕∘≠)⟨¯∞,¯1.5,π,∞,'A','a','b'⟩
+ (⍒≡⌽∘↕∘≠)⟨↕0,¯1.1,¯1,¯1‿¯∞,¯1‿0,¯1‿0‿0,¯1‿∞,0,6⥊0,1e¯20,1,1+1e¯15⟩
+ (⍒≡⌽∘↕∘≠)(<∾⟨↕0,1,1‿1,2‿1‿1,2‿1,2,1‿2,2‿2,3⟩⥊¨<)'a'
+ (⍋≡↕∘≠)⥊⍉(↕5)⥊⟜1⊸⥊⌜1‿'b'
+ (⊢≡○⍋(0‿1+≠)⥊⊢)⟨¯2,'a',1,'f'⟩
+ ⟨1,2,3,1‿2,2‿1,1‿3,2‿2,3‿1⟩(⥊⊸(≠∘⊣∾˜¯1⊸⊑⊸(⌊∾⊣)∾×´⊸⌊)⌜≡○(⍋⥊)⥊⌜⟜(+`∘≠⟜(↕6)¨))↕4
+ ((⥊˜-⥊⟜2‿0)∘≠≡⍋+⍒)2/↕5
+ "edcba"≡∨"bdace"
+ (↕7)≡∧⍋|⟜⌽1+↕7
+ ⟨1,3,∞,'e','i'⟩ (⍋≡≠∘⊣(⊣↓⊢⍋⊸⊏+`∘>)⍋∘∾) (2÷˜↕8)∾"aegz"
+ ⟨'z','d',1‿0,0⟩ (⍒≡≠∘⊣(⊣↓⊢⍋⊸⊏+`∘>)⍒∘∾) (2÷˜↕8)∾"aegz"
+ (<1)≡(↕2‿3)⍋1+↕3
+ (<0)≡"abc"⥊⊸⍒○<≍"acc"
+⟩