From 232bba91feeba640f0d33cbad47baaa3eff06770 Mon Sep 17 00:00:00 2001 From: "B. Wilson" Date: Thu, 4 May 2023 23:44:24 +0900 Subject: [PATCH] Implement the k function Marks are reified as underscore-prefixed variables. Note that marks are saved per-document, so switching between buffers with `e` will replace mark variables with ones for new document. --- ALE.dws | Bin 54880 -> 56640 bytes build-workspace.apls | 21 +++++++++++---------- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/ALE.dws b/ALE.dws index 6eadbf7ff5efab944c61e0f9df78b8e09dce6e14..ae79d889941babd901026786863d61e8cd75f745 100644 GIT binary patch delta 7948 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 Tcn~RwFoN(KxS4vZe-`{N8)kI& diff --git a/build-workspace.apls b/build-workspace.apls index d243a90..4255e50 100755 --- a/build-workspace.apls +++ b/build-workspace.apls @@ -13,28 +13,29 @@ W ← {⍺←1,≢∆ ⋄ 0≠c←chkrange ⍺:_←c ⋄ ⎕←∆[rngidx ⍺]∆e ∆nl ⎕NPUT ⍵ 2 ⋄ ∆f∘←0 ⋄ ⍙∘←(''≡⍙)⊃⍙ ⍵ ⋄ _←0} _r ← {∆p∘←p←⍵ ∆p⊃⍨⍵≡'' ⋄ 0=≢z←1+p ⎕S 2⊢∆:4 perr ¯1 ⋄ 0=+⌿m←z<_:⊃⌽z ⋄ ⊃⌽m⌿z} _s ← {∆p∘←p←⍵ ∆p⊃⍨⍵≡'' ⋄ 0=≢z←1+p ⎕S 2⊢∆:4 perr ¯1 ⋄ 0=+⌿m←z>_:⊃z ⋄ ⊃m⌿z} - a ← {0≠c←chkline ⍵:_←c ⋄ d←input ⋄ __∘←_ ⋄ _∘←⍵+≢d ⋄ d≡0⍴⊂'':_←0 ⋄ ∆∆∘←∆ ⋄ ∆∘←(⍵↑∆),d,⍵↓∆ ⋄ ∆f∘←1 ⋄ _←0} - c ← {0≠c←chkrange ⍵:_←c ⋄ d←input ⋄ s e←2⍴⍵ ⋄ ∆∆∘←∆ ⋄ ∆∘←(∆↑⍨s-1),d,e↓∆ ⋄ ∆f∘←1 ⋄ __∘←_ ⋄ _∘←(s-1)+≢d ⋄ _←0} + a ← {0≠c←chkline ⍵:_←c ⋄ d←input ⋄ __∘←_ ⋄ _∘←⍵+≢d ⋄ d≡0⍴⊂'':_←0 ⋄ ∆∆∘←∆ ⋄ ∆∘←(⍵↑∆),d,⍵↓∆ ⋄ ∆f∘←1 ⋄ ⍵ fixmarks≢d ⋄ _←0} + c ← {0≠c←chkrange ⍵:_←c ⋄ d←input ⋄ s e←2⍴⍵ ⋄ ∆∆∘←∆ ⋄ ∆∘←(∆↑⍨s-1),d,e↓∆ ⋄ ∆f∘←1 ⋄ __∘←_ ⋄ _∘←(s-1)+≢d ⋄ s fixmarks¯1+(s-e)+≢d ⋄ _←0} chkline ← {⍺←0 ⋄ ⍬≢⍴⍵:0 perr 4 ⋄ (⍵≥⍺)⍲(⍵≤≢∆):0 perr 11 ⋄ _←0} chkrange ← {⍺←1 ⋄ 1<⍴⍴⍵:0 perr 4 ⋄ >/w←2⍴⍵:0 perr 5 ⋄ ~∧/(w≥⍺)∧(w≤≢∆):0 perr 11 ⋄ _←0} - d ← {0≠c←chkrange ⍵:_←c ⋄ ∆∆∘←∆ ⋄ ∆∘←∆[,(⍳≢∆)~rngidx ⍵] ⋄ __∘←_ ⋄ _∘←(≢∆)⌊⊃⍵ ⋄ ∆f∘←1 ⋄ _←0} - e ← {∆f:2 perr 24 ⋄ 22::1 perr 22 ⋄ ∆∆∘←⊃∆ ∆e ∆nl∘←⎕NGET(⍙∘←⍵)1 ⋄ ⎕←2 ⎕NINFO ⍵ ⋄ __∘←_∘←≢∆ ⋄ _←0} + d ← {0≠c←chkrange ⍵:_←c ⋄ ∆∆∘←∆ ⋄ ∆∘←∆[,(⍳≢∆)~rngidx ⍵] ⋄ __∘←_ ⋄ _∘←(≢∆)⌊⊃⍵ ⋄ ∆f∘←1 ⋄ (0⌈¯1+⊃⍵)fixmarks 1+-/⌽2⍴⍵ ⋄ _←0} + e ← {∆f:2 perr 24 ⋄ 22::1 perr 22 ⋄ mn md←2⍴↓⍉↑∆mk ⋄ _←⎕EX mn/⍨md≡¨⊂⍙ ⋄ _←⍎⍕(,'_')(m/mn)'∘←'0,∆mv/⍨m←md≡¨⊆⍵ ⋄ ∆∆∘←⊃∆ ∆e ∆nl∘←⎕NGET(⍙∘←⍵)1 ⋄ ⎕←2 ⎕NINFO ⍵ ⋄ __∘←_∘←≢∆ ⋄ _←0} efn ← {∆f:2 perr 24 ⋄ 2≠≡⍵:3 perr 11 ⋄ 1≠≢⍴⍵:3 perr 4 ⋄ z←RESET ⋄ ∆∆ _∘←∆ _ ⋄ ∆ _∘←⍵(≢⍵) ⋄ _←0} eval ← {⍎⍵} g ← {⍺←1,≢∆ ⋄ 0≠c←chkrange ⍺:_←c ⋄ i←rngidx ⍺ ⋄ ∆p∘←p←⍵ ∆p⊃⍨⍵≡'' ⋄ 0=≢z←1+i[p ⎕S 2⊢∆[i]]:_←0 ⋄ i∆ i_←∆ _ ⋄ _←⍺⍺{⍺⍺⊢_∘←⍵}¨z ⋄ ∆∆ __∘←i∆ i_ ⋄ ∆f∘←1 ⋄ _←0} - i ← {0≠c←chkline ⍵:_←c ⋄ d←input ⋄ __∘←_ ⋄ _∘←⍵+0⌈¯1+≢d ⋄ d≡0⍴⊂'':_←0 ⋄ ∆∆∘←∆ ⋄ ∆∘←((0⌈⍵-1)↑∆),d,(0⌈⍵-1)↓∆ ⋄ ∆f∘←1 ⋄ _←0} - j ← {0≠c←chkrange ⍵:_←c ⋄ s e←2⍴⍵ ⋄ ∆∆∘←∆ ⋄ ∆∘←(∆↑⍨s-1),(,/∆[rngidx s e]),e↓∆ ⋄ ∆f∘←1 ⋄ __∘←_ ⋄ _∘←s ⋄ _←0} - k ← {0≠c←chkline ⍺:_←c ⋄ ∆m,¨←(⊂⍵)⍺} + i ← {0≠c←chkline ⍵:_←c ⋄ d←input ⋄ __∘←_ ⋄ _∘←⍵+0⌈¯1+≢d ⋄ d≡0⍴⊂'':_←0 ⋄ ∆∆∘←∆ ⋄ ∆∘←((0⌈⍵-1)↑∆),d,(0⌈⍵-1)↓∆ ⋄ ∆f∘←1 ⋄ (0⌈¯1+⍵)fixmarks≢d ⋄ _←0} + j ← {0≠c←chkrange ⍵:_←c ⋄ s e←2⍴⍵ ⋄ ∆∆∘←∆ ⋄ ∆∘←(∆↑⍨s-1),(,/∆[rngidx s e]),e↓∆ ⋄ ∆f∘←1 ⋄ __∘←_ ⋄ _∘←s ⋄ (⊃⍵)fixmarks s-e ⋄ _←0} + k ← {0≠c←chkline ⍺:_←c ⋄ k←⊂('_',⍵)⍙ ⋄ ∆mk∪←k ⋄ m←k≡¨∆mk ⋄ ∆mv(⊣⊣@(⍸m)∘⊢(≢m)⍴⊢)⍨←⍺ ⋄ ⍎'_',⍵,'∘←⍺'} l ← {0≠c←chkrange ⍵:_←c ⋄ z←{0⊣⎕←⍵}¨'\t' '$'⎕R'\\t' '$'⊢∆[rngidx ⍵] ⋄ _∘←⊃⌽2⍴⍵ ⋄ z←0} m ← {⍺←_,_ ⋄ 0≠c←chkline ⍵:_←c ⋄ 0≠c←chkrange⊢x y←2⍴⍺:_←c ⋄ (x≤⍵)∧(⍵≤y):0 perr 11 z←(1+y-x)↑(x-1)↓∆ ⋄ 0≠c←d x y:_←c ⋄ ∆∆∘←∆ ⋄ ∆f∘←1 ⋄ __∘←_ ⋄ _∘←⍵+(⍵/w←2⍴⍵:0 perr 5 ⋄ ~ ∇ ∇ {z}←RESET - ⍙ ∆ ∆∆ ∆e ∆f ∆nl ∆m ∆p _ __ z←''(0⍴⊂'')(0⍴⊂'')'UTF-8' 0(13 10)(⍬ ⍬)''0 0 0 + ⍙ ∆ ∆∆ ∆e ∆f ∆nl ∆mk ∆mv ∆p _ __ z←''(0⍴⊂'')(0⍴⊂'')'UTF-8' 0(13 10)(0⍴'' '')⍬''0 0 0 ∇ RESET