diff options
| author | Marshall Lochbaum <mwlochbaum@gmail.com> | 2020-06-11 17:56:54 -0400 |
|---|---|---|
| committer | Marshall Lochbaum <mwlochbaum@gmail.com> | 2020-06-11 20:03:05 -0400 |
| commit | 4966cfb61d7eb8b7e594ebb3ca09d3d2dc190d67 (patch) | |
| tree | c4266a2ece6249487c7d5e2f50b546114ed2168e /c.bqn | |
| parent | 5cb10a20d2f691a1dc7e6fdc1caca2699a4c3851 (diff) | |
Use tables for primitive functions
Diffstat (limited to 'c.bqn')
| -rwxr-xr-x | c.bqn | 18 |
1 files changed, 11 insertions, 7 deletions
@@ -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←{ |
