aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xdzref_full37
1 files changed, 13 insertions, 24 deletions
diff --git a/dzref_full b/dzref_full
index fca51993..00582d2f 100755
--- a/dzref_full
+++ b/dzref_full
@@ -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⟜⥊¨ "+-×÷⋆⌊=≤≢⥊⊑↕⁼"