Great, I will send a PR for List.starts_with?/2 and then we can move forward to ends_with?/2 and contains?/2
Thank you for your insights On Wed, 22 Feb 2017 11:57:27 +0100 José Valim <[email protected]> wrote: > I would prefer to not support improper lists as second argument for now. It > is unnecessary complexity which doesn't seem to be needed yet. However, > note we end-up supporting them as first argument of starts_with? by > definition, since we don't want to traverse the whole list. > > > *José Valim* > www.plataformatec.com.br > Skype: jv.ptec > Founder and Director of R&D > > On Tue, Feb 21, 2017 at 7:03 PM, eksperimental <[email protected]> > wrote: > > > 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 <[email protected]> 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 < > > [email protected]> > > > 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 [email protected]. > > > > To view this discussion on the web visit > > https://groups.google.com/d/ms > > > > gid/elixir-lang-core/20170221213857.6c3a8f4f.eksperimental%4 > > 0autistici.org > > > > . > > > > For more options, visit https://groups.google.com/d/optout. > > > > > > > > > > > -- > > 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 [email protected]. > > To view this discussion on the web visit https://groups.google.com/d/ms > > gid/elixir-lang-core/20170222010356.6eaf2436.eksperimental%40autistici.org > > . > > For more options, visit https://groups.google.com/d/optout. > > > -- 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 [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/elixir-lang-core/20170222202634.2a72be31.eksperimental%40autistici.org. For more options, visit https://groups.google.com/d/optout.
