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.
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.