native ⋈⁼ & ⌾⋈
plus some more undo & under tests
This commit is contained in:
parent
ae0d392d43
commit
920a89f019
@ -1427,9 +1427,17 @@ NOINLINE B enclose_im(B t, B x) {
|
||||
return r;
|
||||
}
|
||||
|
||||
NOINLINE B pair_im(B t, B x) {
|
||||
if (isAtm(x) || RNK(x)!=1 || IA(x)!=1) thrM("⋈⁼: Argument wasn't a length-1 list");
|
||||
B r = IGet(x, 0);
|
||||
dec(x);
|
||||
return r;
|
||||
}
|
||||
|
||||
B reverse_ucw(B t, B o, B w, B x) { return reverse_ix(m_f64(0), w, c1(o, reverse_c2(t, inc(w), x))); }
|
||||
B reverse_uc1(B t, B o, B x) { return C1(reverse, c1(o, reverse_c1(t, x))); }
|
||||
B enclose_uc1(B t, B o, B x) { return enclose_im(m_f64(0), c1(o, m_unit(x))); }
|
||||
B pair_uc1(B t, B o, B x) { return pair_im(m_f64(0), c1(o, m_vec1(x))); }
|
||||
|
||||
void sfns_init(void) {
|
||||
c(BFn,bi_pick)->uc1 = pick_uc1;
|
||||
@ -1444,4 +1452,6 @@ void sfns_init(void) {
|
||||
c(BFn,bi_drop)->ucw = drop_ucw;
|
||||
c(BFn,bi_lt)->im = enclose_im;
|
||||
c(BFn,bi_lt)->uc1 = enclose_uc1;
|
||||
c(BFn,bi_pair)->im = pair_im;
|
||||
c(BFn,bi_pair)->uc1 = pair_uc1;
|
||||
}
|
||||
|
||||
@ -108,3 +108,25 @@ n←500 ⋄ a←↕n ⋄ i←(-n)+↕2×n ⋄ r←⌽(2×n)⥊a ⋄ ! (⌽a) ≡
|
||||
•internal.Keep⌾(¯5⊸↓) ↕4 %% ↕4
|
||||
{!(a×1+9× 0‿1‿2∊𝕩+↕3) ≡ 10⊸×⌾(𝕩⊸↓) a←3‿4‿5⥊↕60}¨ ¯5+↕10
|
||||
{!(a×1+9׬0‿1‿2∊𝕩+↕3) ≡ 10⊸×⌾(𝕩⊸↑) a←3‿4‿5⥊↕60}¨ ¯3+↕7
|
||||
|
||||
# <
|
||||
⊢⌾< 4 %% 4
|
||||
(<5)⌾< 4 %% 5
|
||||
{<"cd"}⌾< "ab" %% "cd"
|
||||
!"<⁼: Argument wasn't a rank 0 array" % 4⌾< "ab"
|
||||
!"<⁼: Argument wasn't a rank 0 array" % {⇐}⌾< "ab"
|
||||
!"<⁼: Argument wasn't a rank 0 array" % ≍⌾< 2
|
||||
|
||||
# ⋈
|
||||
⊢⌾⋈ 4 %% 4
|
||||
(⋈5)⌾⋈ 4 %% 5
|
||||
{⋈"cd"}⌾⋈ "ab" %% "cd"
|
||||
!"⋈⁼: Argument wasn't a length-1 list" % 4⌾⋈ "ab"
|
||||
!"⋈⁼: Argument wasn't a length-1 list" % {⇐}⌾⋈ "ab"
|
||||
!"⋈⁼: Argument wasn't a length-1 list" % ≍⌾⋈ 2
|
||||
!"⋈⁼: Argument wasn't a length-1 list" % (<4)⌾⋈ 2
|
||||
|
||||
# k⊸⌽
|
||||
!"⌽⁼: 𝕩 must have rank at least 1" % 1⌾(2⊸⌽) ↕10
|
||||
⊏⌾(2⊸⌽) 10‿10⥊↕100 %% 28‿29‿20‿21‿22‿23‿24‿25‿26‿27
|
||||
≍⌾(1‿2⊸⌽) 5‿5⥊↕25 %% 1‿5‿5⥊22‿23‿24‿20‿21‿2‿3‿4‿0‿1‿7‿8‿9‿5‿6‿12‿13‿14‿10‿11‿17‿18‿19‿15‿16
|
||||
|
||||
16
test/cases/undo.bqn
Normal file
16
test/cases/undo.bqn
Normal file
@ -0,0 +1,16 @@
|
||||
<⁼ <"foo" %% "foo"
|
||||
!"<⁼: Argument wasn't a rank 0 array" % <⁼ 4
|
||||
!"<⁼: Argument wasn't a rank 0 array" % <⁼ ↕0
|
||||
!"<⁼: Argument wasn't a rank 0 array" % <⁼ "f"
|
||||
|
||||
⋈⁼ ⋈"foo" %% "foo"
|
||||
⋈⁼ "f" %% 'f'
|
||||
!"⋈⁼: Argument wasn't a length-1 list" % ⋈⁼ 4
|
||||
!"⋈⁼: Argument wasn't a length-1 list" % ⋈⁼ ↕0
|
||||
!"⋈⁼: Argument wasn't a length-1 list" % ⋈⁼ ≍"f"
|
||||
|
||||
!"⌽: Argument cannot be a unit" % ⌽⁼ 0
|
||||
⌽⁼ ↕10 %% 9-↕10
|
||||
|
||||
!"⍉⁼: 𝕩 must not be an atom" % ⍉⁼ 3
|
||||
⍉⁼ <3 %% <3
|
||||
Loading…
Reference in New Issue
Block a user