Sorry José, I was wrong when i wrote
> If we support improper lists, prefix could be any term, not just a list.
what meant is that if we support List.ends_with?/2, then suffix could be any term (but I will show
that this is still wrong)
List.ends_with?([1, 2 | 3], 3)
#=> true
but that could be ambiguous,
List.ends_with?([1, 2, 3], [2, 3])
#=> true
List.ends_with?([1 | [2, 3]], [2, 3])
#=> true
So suffix could ONLY be a list or an improper list.
List.ends_with?([1, 2 | 3]], [2 | 3])
#=> true
List.ends_with?([1, 2 | 3]], [2 | 3])
#=> true
Regarding prefixes.
We could still support improper lists as the first argument,
List.starts_with?([1, 2 | 3], [1, 2])
#=> true
and improper lists as the prefix (returns true only if both lists are the same)
List.starts_with?([1, 2 | 3], [1, 2 | 3])
#=> true
So wrapping up,
lists, prefixes and suffixes could be all maybe_improper_list
On Tue, 21 Feb 2017 16:02:58 +0100
José Valim <
jose....@plataformatec.com.br> wrote:
> Excellent questions!
>
> I don't think we should support improper lists because there is no notion
> of prefix for improper list. For instance, I would not expect this to match:
>
> List.starts_with?([1, 2], [1 | 2])
>
>
> Because we would compare 1 == 1 and then [2] to 2. The only situation they
> would match is if they are exactly equal and then the function is no longer
> necessary.
>
>
> *José Valim*
>
www.plataformatec.com.br
> Skype: jv.ptec
> Founder and Director of R&D
>
> On Tue, Feb 21, 2017 at 3:38 PM, eksperimental <
eksper...@autistici.org>
> wrote:
>
> > Hi, List.starts_with?/2 have recently been introduced
> >
https://github.com/elixir-lang/elixir/pull/5789
> >
> > I was working on improving the specs and the code,
> > and I have realized there are a few issues I would to work on.
> >
> > Initially would like to to know whether we should support improper lists,
> > that would determine how
> > the code can be optimized.
> >
> > I would say yes, we should support improper lists.
> > But we also need to keep in mind that we will probably will end up adding
> > List.ends_with?/2 too,
> > so we need to keep that in mind
> >
> > If we support improper lists, prefix could be any term, not just a list.
> >
> > --
> > You received this message because you are subscribed to the Google Groups
> > "elixir-lang-core" group.
> > To unsubscribe from this group and stop receiving emails from it, send an
> > email to
elixir-lang-co...@googlegroups.com.