Hi Julian.
It think it is a good addition.
It is also analog to String.contains?/2 

On Fri, 15 Jul 2022 04:58:59 -0700 (PDT)
Julian Somoza <julian.som...@gmail.com> wrote:

> Hi everyone, I was working on a suggestion to add a new function on
> the List module in order to find out if a given sublist is inside
> another list.
> 
> We currently have *List.starts_with?/2* but this only match the
> beginning:
> 
> iex(1)> List.starts_with?([1, 2, 3], [1, 2])  
> true
> 
> Besides, we have *MapSet.subset*, but it ignores the elements order:
> 
> iex(1)> MapSet.subset?(MapSet.new([1, 2]), MapSet.new([1, 2, 3]))  
> true
> 
> iex(1)> MapSet.subset?(MapSet.new([2, 1]), MapSet.new([1, 2, 3]))
> true
> 
> I suggest a new function that works like *List.starts_with?/2* but
> matches the entire list, either at the beginning, middle, or end of
> the list.
> 
> iex(1)> List.includes_sublist?([1,2,3,4,5], [2,3])  
> true
> 
> iex(1)> List.includes_sublist?([1,2,3,4,5], [1,2])  
> true
> 
> iex(1)> List.includes_sublist?([1,2,3,4,5], [3,4,5])   
> true
> 
> iex(1)> List2.includes_sublist?([1,2,3,4,5], [1,5])    
> false
> 
> I'm sharing with you also the function code:
> 
> https://github.com/elixir-lang/elixir/pull/11987/commits/2b7eba5f6419f906f565e7d4bfe3d687f3b8b052
> 
> I aim to complement the List.starts_with?/2. This function could be
> the same or even more useful because it finds the ordered sublist
> also in the middle or in the end.
> 
> Looking forward for your comments,
> BR,
> Julian Somoza.
> 
> 

-- 
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-core+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/elixir-lang-core/62d1588e.1c69fb81.3332c.1d2dSMTPIN_ADDED_MISSING%40gmr-mx.google.com.

Reply via email to