From dcd18fa97095a7563603a278a2f52efbca084a53 Mon Sep 17 00:00:00 2001 From: Marshall Lochbaum Date: Sat, 25 Jul 2020 23:00:37 -0400 Subject: Avoid using fully general Pick for most of dzref_full --- dzref_full | 45 ++++++++++++++++++++++----------------------- 1 file changed, 22 insertions(+), 23 deletions(-) diff --git a/dzref_full b/dzref_full index d8902c61..b8322362 100755 --- a/dzref_full +++ b/dzref_full @@ -72,7 +72,7 @@ identity ← {(0⊑𝕨){𝕗=𝕩}◶𝕩‿(1⊑𝕨)}´ ⟨+‿0,-‿0,×‿1 #⌜ # LAYER 3: Remove other limits -# Now all implementations are full except ∾; ↕ is monadic only +# Now all implementations are full except ∾ and ⊑; ↕ is monadic only Int←IsArray◶⟨⌊⊸=,0⟩ Nat←IsArray◶⟨0⊸≤∧⌊⊸=,0⟩ @@ -96,17 +96,6 @@ Range←{ IsArray◶I‿M 𝕩 } -Pick1←{ - ! 1==𝕨 - ! 𝕨=○≠s←≢𝕩 - ! ∧´Int¨𝕨 - ! ∧´𝕨(≥⟜-∧<)s - 𝕨↩𝕨+s×𝕨<0 - (⥊𝕩)⊑˜0(⊑⟜𝕨+⊑⟜s×⊢)´-↕⊸¬≠𝕨 -} -Pickd←(∨´∘⥊IsArray¨∘⊣)◶Pick1‿{Pickd⟜𝕩¨𝕨} -Pick←IsArray◶⥊‿⊢⊸Pickd - match←{¬∘(0⊑𝕨)◶(1⊑𝕨)‿𝕩}´⟨ ⟨≠○IsArray , 0⟩ ⟨¬IsArray∘⊢, =⟩ @@ -117,9 +106,7 @@ match←{¬∘(0⊑𝕨)◶(1⊑𝕨)‿𝕩}´⟨ Depth←IsArray◶0‿{1+0⌈´Depth¨⥊𝕩} -⊑ ↩ (0¨∘≢)⊸Pick ⊘ Pick ↕ ↩ Range -◶ ↩ {𝕨((𝕨𝔽𝕩)⊑𝕘){𝔽}𝕩} # Same definition, new Pick ≡ ← Depth ⊘ Match ≢ ↩ ≢ ⊘ (¬Match) @@ -136,7 +123,7 @@ Pair ← {⟨𝕩⟩} ⊘ {⟨𝕨,𝕩⟩} Merge←(0<≠∘⥊)◶⊢‿{ c←≢⊑𝕩 ! ∧´⥊(c≡≢)¨𝕩 - 𝕩⊑⟜ToArray˜⌜↕c + 𝕩⊑⟜⥊˜⌜c⥊↕×´c } > ↩ Merge ⊘ > ≍ ← >∘Pair @@ -157,7 +144,7 @@ _rankOp_←{ c←×´s←𝕨Cell𝕩 f⥊⊑⟜(⥊𝕩)¨∘((s⥊↕c)+c×⊢)¨↕×´f } - > ((⊑k)Enc𝕨) 𝔽¨ ((1-˜≠)⊸⊑k)Enc𝕩 + > ((0⊑k)Enc𝕨) 𝔽¨ ((1-˜≠)⊸⊑k)Enc𝕩 } _scan←{ ! IsArray 𝕩 @@ -172,7 +159,7 @@ _scan←{ ` ← _scan _repeat_←{ n←𝕨𝔾𝕩 - f←⊑𝕨⟨𝔽⟩⊘⟨𝕨𝔽⊢⟩𝕩 + f←0⊑𝕨⟨𝔽⟩⊘⟨𝕨𝔽⊢⟩𝕩 l←u←0 {!Int𝕩⋄l↩l⌊𝕩⋄u↩u⌈𝕩}⚇0 n a←𝕩⋄_p←{𝔽∘⊣`(1+𝕩)⥊i<¨⊸⊏¨l/𝕩 }⍟(0<≠∘⥊) @@ -300,6 +286,19 @@ Group←{ ∾ ↩ Join ⊘ JoinTo ⊔ ← Group⟜(↕≠⚇1) ⊘ Group +Pick1←{ + ! 1==𝕨 + ! 𝕨=○≠s←≢𝕩 + ! ∧´Int¨𝕨 + ! ∧´𝕨(≥⟜-∧<)s + 𝕨↩𝕨+s×𝕨<0 + (⥊𝕩)⊑˜0(⊑⟜𝕨+⊑⟜s×⊢)´-↕⊸¬≠𝕨 +} +Pickd←(∨´∘⥊IsArray¨∘⊣)◶Pick1‿{Pickd⟜𝕩¨𝕨} +Pick←IsArray◶⥊‿⊢⊸Pickd +⊑ ↩ (0¨∘≢)⊸Pick ⊘ Pick +◶ ↩ {𝕨((𝕨𝔽𝕩)⊑𝕘){𝔽}𝕩} # Same definition, new Pick + # Searching IndexOf←{ c←1-˜=𝕨 -- cgit v1.2.3