This is a bit simpler and fixes the empty result problem, and returns a
non-enclosed result:
RemoveSubstrings ← {⍵/⍨ ~⊃∨/ (-⍳⍴⍺) ∘.⌽ ⊂⍺⍷⍵}
Like your solution this only works with ⎕IO←0.
On 14 March 2017 at 14:20, Elias Mårtenson <[email protected]> wrote:
> In a discussion on the #lisp IRC channel recently, someone wanted to
> remove a certain substring from a larger string. In Lisp, the solution is
> to simply use cl-ppcre and remove by regex.
>
> But, I started thinking about how to do this in APL, and this is what I
> came up with:
>
> RemoveSubstrings ← {,/ ⍵ ⊂⍨ ↑~∨/ (-⍳⍴⍺) °.⌽ ⊂⍺⍷⍵}
>
> Is this a good way of solving the problem? I realise that I have a bug
> when the resulting string is empty:
>
> * "foo" RemoveSubstrings "foo"*
> DOMAIN ERROR
> λ1[1] λ←,/⍵⊂⍨↑∼∨/(-⍳⍴⍺)°.⌽⊂⍺⋸⍵
> ^ ^
>
> Does anyone have a better solution?
>
> Regards,
> Elias
>