From 7393c4b6638d1e722793e92dbe756bb98e254e6c Mon Sep 17 00:00:00 2001 From: dzaima Date: Sun, 21 Aug 2022 07:58:41 +0300 Subject: [PATCH] =?UTF-8?q?fully=20native=20=E2=8A=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/builtins/sfns.c | 6 ++---- src/load.c | 1 - 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/src/builtins/sfns.c b/src/builtins/sfns.c index 5a5e8f57..ddf58c83 100644 --- a/src/builtins/sfns.c +++ b/src/builtins/sfns.c @@ -240,7 +240,6 @@ B shape_c2(B t, B w, B x) { return taga(r); } -extern B rt_pick; B pick_c1(B t, B x) { if (isAtm(x)) return x; if (RARE(IA(x)==0)) { @@ -307,9 +306,8 @@ static B recPick(B w, B x) { // doesn't consume B pick_c2(B t, B w, B x) { if (RARE(isAtm(x))) { - if (isAtm(w) || RNK(w)!=1 || IA(w)!=0) return c2(rt_pick, w, x); // ugh this is such a lame case that'd need a whole another recursive fn to implement - dec(w); - return x; + if (isArr(w) && RNK(w)==1 && IA(w)==0) { dec(w); return x; } + x = m_atomUnit(x); } if (isNum(w)) { if (RNK(x)!=1) thrF("⊑: 𝕩 must be a list when 𝕨 is a number (%H ≡ ≢𝕩)", x); diff --git a/src/load.c b/src/load.c index c324699b..bbbaa82c 100644 --- a/src/load.c +++ b/src/load.c @@ -387,7 +387,6 @@ void load_init() { // very last init function rt_select = Get(rtObjRaw, n_select ); gc_add(rt_select); rt_slash = Get(rtObjRaw, n_slash ); gc_add(rt_slash); rt_ud = Get(rtObjRaw, n_ud ); gc_add(rt_ud); - rt_pick = Get(rtObjRaw, n_pick ); gc_add(rt_pick); rt_take = Get(rtObjRaw, n_take ); gc_add(rt_take); rt_drop = Get(rtObjRaw, n_drop ); gc_add(rt_drop); rt_group = Get(rtObjRaw, n_group ); gc_add(rt_group);