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 <loke...@gmail.com> 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 >