diff options
| -rwxr-xr-x | dzref_full | 37 |
1 files changed, 13 insertions, 24 deletions
@@ -29,17 +29,11 @@ Length ← (0<0⊑≢)◶⟨1⋄0⊑⊢⟩∘≢ × ↩ 0⊸(<->) ⊘ × | ← ×⟜× ⊘ {𝕩-𝕨×⌊𝕩÷𝕨} -_eachm←{ - r←⥊𝕩 ⋄ F←𝔽 - E←(≠r)⊸≤◶{r↩r𝕩_amend˜F𝕩⊑r⋄E𝕩+1}‿⊢ - E 0 ⋄ (≢𝕩)⥊r -} -¨ ← _eachm # LIMITED to monadic case and array 𝕩 _fold←{ ! 1==𝕩 l←≠v←𝕩 ⋄ F←𝔽 r←𝕨 (0<l)◶{𝕩⋄Identity f}‿{l↩l-1⋄l⊑𝕩}⊘⊣ 𝕩 - {r↩(𝕩⊑v)F r}¨(l-1)⊸-¨↕l + {r↩(𝕩⊑v)F r}⌜(l-1)⊸-⌜↕l r } ´ ← _fold @@ -52,28 +46,20 @@ _fold←{ ToArray ← IsArray◶<‿⊢ -∾ ← {k←≠𝕨⋄k⊸≤◶⟨⊑⟜𝕨⋄-⟜k⊑𝕩˜⟩¨↕k+≠𝕩} # LIMITED to two vector arguments - -_table←{ - m←≠a←⥊𝕨 ⋄ n←≠b←⥊𝕩 ⋄ F←𝔽 - r←↕m×n - {𝕩⊸{r↩r((n×𝕨)+𝕩)_amend˜(𝕨⊑a)F(𝕩⊑b)}¨↕n}¨↕m - (𝕨∾○≢𝕩)⥊r -} +∾ ← {k←≠𝕨⋄k⊸≤◶⟨⊑⟜𝕨⋄-⟜k⊑𝕩˜⟩⌜↕k+≠𝕩} # LIMITED to two vector arguments _eachd←{ _e←{ # 𝕨 has smaller or equal rank k←≠p←≢𝕨 ⋄ q←≢𝕩 - ! ∧´(⊑⟜p=⊑⟜q)¨↕k - l←1×´(q⊑˜k⊸+)¨↕q≠⊸-k + ! ∧´(⊑⟜p=⊑⟜q)⌜↕k + l←1×´(q⊑˜k⊸+)⌜↕q≠⊸-k a←⥊𝕨 ⋄ b←⥊𝕩 - q⥊⥊(≠a) (⊑⟜a𝔽l⊸×⊸+⊑b˜)_table○↕ l + q⥊⥊(≠a) (⊑⟜a𝔽l⊸×⊸+⊑b˜)⌜○↕ l } (>○=)◶⟨𝔽_e⋄𝔽˜_e˜⟩ } -⌜ ← {(𝔽_eachm)⊘(𝔽_table)○ToArray} -¨ ↩ {(𝔽_eachm)⊘(𝔽_eachd)○ToArray} +¨ ↩ {(𝔽⌜)⊘(𝔽_eachd○ToArray)} _perv←{ # Pervasion (⊢⊘∨○IsArray)◶⟨𝔽⋄𝔽{𝕨𝔽_perv𝕩}¨⟩ @@ -94,10 +80,12 @@ Reshape←{ ! 1≥=𝕨 𝕨↩⥊𝕨 ! ∧´Nat¨𝕨 - n←≠𝕩 ⋄ l←1×´𝕨 - ! n≤○(0⊸=)l - 𝕨⥊⊑⟜𝕩¨n|↕l -}⟜Deshape + l←1×´𝕨 + n←1×´≢𝕩 + 𝕨⥊(l=n)◶{ + 𝕩(0<n)◶⟨Type⊸(⊣⌜)⋄⥊⊸{⊑⟜𝕨¨n|𝕩}⟩↕l + }‿⊢𝕩 +}⟜ToArray ⥊ ↩ Deshape ⊘ Reshape Range←{ @@ -416,6 +404,7 @@ X←Raw←{≤4} ⍎"Type ← ⟨⟩⥊0⊸⥊" '!' Mod "{𝕩 ⋄ ≤1}⍟¬" + '⌜' Mod "{(𝔽¨)⊘(𝔽⌜)}" Mod⟜⥊¨ "+-×÷⋆⌊=≤≢⥊⊑↕⁼" |
