Re: Proposal: add lists:intersperse/2 and lists:intercalate/2
"Richard O'Keefe" <[email protected]>
| Newsgroups | gmane.comp.lang.erlang.general |
|---|---|
| Message-ID | <CABcYAdL1AdFmD=hr_g3u4VLDcGF=7YXyapiKmrk8XeREDz+=Hw@mail.gmail.com> |
For Haskell's intersperse, we have lists:join/2. add-between offers rather more options, but that's Racket for you. On Wed, 24 Mar 2021 at 09:18, Siraaj Khandkar <[email protected]> wrote: > Greetings Erlangers, > > Nothing serious, just some fun here. I stumbled on the function > "add-between" in Racket stdlib, which reminded me of the lively, lolzy > debate we had here 5 years ago :-D > > $ racket > Welcome to Racket v7.9 [bc]. > > (add-between '(a b c d) 0) > '(a 0 b 0 c 0 d) > > > > > https://docs.racket-lang.org/reference/pairs.html#%28def._%28%28lib._racket%2Flist..rkt%29._add-between%29%29 > > > On 3/2/16 12:02 PM, Siraaj Khandkar wrote: > > On 3/2/16 9:47 AM, Jesper Louis Andersen wrote: > >> Hi Erlangers, > >> > >> I'd really like to add two functions to the lists module from Haskell: > >> > >> intersperse(List, Seperator) produces a list where each element is > >> separated by separator, i.e. > >> > >> X = [1,2,3] > >> [1, x, 2, x, 3] = lists:intersperse(X, x), > >> > >> and it's cousin, intercalate(ListOfLists, Separator) is > >> append(intersperse(ListOfLists, Seperator)), i.e, > >> > >> Y = ["a", "b", "c"] > >> "a, b, c" = lists:intercalate(Y, ", "), > >> > >> The implementations are straightforward and easy to write tests for, > even > >> property based tests if needed. > >> > >> The rationale for this proposal is that I find myself implementing this > >> function again and again in every project I write, and it is highly > >> generic. It belongs in a typical list module. OCaml libraries add it. > >> Haskell's Data.List has it. I believe Erlang, being a practical > language, > >> should have it as well. > >> > >> Thoughts? > > > > +1 > > > > Though I prefer the name "interleave" to "intersperse", since its > > meaning is more-precise and closer to the intended behavior here. >