aboutsummaryrefslogtreecommitdiff
path: root/c.bqn
diff options
context:
space:
mode:
authorMarshall Lochbaum <mwlochbaum@gmail.com>2020-06-11 17:56:54 -0400
committerMarshall Lochbaum <mwlochbaum@gmail.com>2020-06-11 20:03:05 -0400
commit4966cfb61d7eb8b7e594ebb3ca09d3d2dc190d67 (patch)
treec4266a2ece6249487c7d5e2f50b546114ed2168e /c.bqn
parent5cb10a20d2f691a1dc7e6fdc1caca2699a4c3851 (diff)
Use tables for primitive functions
Diffstat (limited to 'c.bqn')
-rwxr-xr-xc.bqn18
1 files changed, 11 insertions, 7 deletions
diff --git a/c.bqn b/c.bqn
index d7e55e02..51e1ee71 100755
--- a/c.bqn
+++ b/c.bqn
@@ -19,6 +19,11 @@ chB←"(){}⟨⟩" ⍝ Bracket
chL←"‿" ⍝ Ligature
chQ←"'""" ⍝ Quote
+Hex←16⊥(•d∾"ABCDEF")⊸⊐
+MakeTab←{(≠chF)↑⊑¨(chF⊐𝕨)⊔𝕩}
+tab1←"|-⌈⌊√÷" MakeTab (<(Hex"10")∾1)∾˜⥊¨(Hex"99")+((↕4)∾6)
+tab2←"⊣+-×÷⌊⌈" MakeTab ⥊¨(Hex"1A")∾(Hex"A0")+↕6
+
Parse←{
⟨⟩Parse𝕩;args←𝕨⋄x←𝕩
x(/˜)↩¬(x∊chW)∨<○(⌈`↕∘≠⊸×)´(lf∾chR)=⌜x
@@ -40,20 +45,19 @@ Parse←{
f64←127-3
GenFn←{
⟨x‿na,vars,locs⟩←𝕩
- D←16⊥(•d∾"ABCDEF")⊸⊐
fns←{
n←•d⊐<𝕩
- n=≠•d:(D"20")∾vars⊐<𝕩
+ n=≠•d:(Hex"20")∾vars⊐<𝕩
n=0:8⥊0
l←2(⌊⋆⁼)n
- (D"44")∾2⊥˘⌽8‿8(⊣⥊×´⊸↑)∾⟨⥊0,(11⥊2)⊤1023+l,(2⥊˜0⌈l)⊤n⟩
+ (Hex"44")∾2⊥˘⌽8‿8(⊣⥊×´⊸↑)∾⟨⥊0,(11⥊2)⊤1023+l,(2⥊˜0⌈l)⊤n⟩
}‿{
- v←vars⊐<𝕩⋄v<≠vars:(D"22")∾v
- ((<(D"10")∾1)∾˜⥊¨(D"99")+((↕4)∾6))⊑˜"|-⌈⌊√÷"⊐<𝕩
+ v←vars⊐<𝕩⋄v<≠vars:(Hex"22")∾v
+ tab1⊑˜chF⊐<𝕩
}‿{
- (⥊¨(D"1A")∾(D"A0")+↕6)⊑˜"⊣+-×÷⌊⌈"⊐<𝕩
+ tab2⊑˜chF⊐<𝕩
}
- ((≠∾∾)⟨locs≠⊸∾f64⟩)∾(D"0B")∾˜∾na⊑⟜fns⊸{𝕎𝕩}¨x
+ ((≠∾∾)⟨locs≠⊸∾f64⟩)∾(Hex"0B")∾˜∾na⊑⟜fns⊸{𝕎𝕩}¨x
}
Gen←{