The PR has been sent! Link: https://github.com/elixir-lang/elixir/pull/11149

Em segunda-feira, 26 de julho de 2021 às 15:07:18 UTC-3, José Valim 
escreveu:

> In this case, I would call Keyword.validate! And then call Map.new. I 
> don’t see a benefit in the generic API as it won’t be faster and not 
> necessarily clearer either. So I would stick with my last proposal. :)
>
> On Mon, Jul 26, 2021 at 20:01 Paulo Valente <polva...@gmail.com> wrote:
>
>> I was considering making it only accept keywords, and return keywords as 
>> well.
>>
>> However, I can see benefits in accepting Enumerables. What do you think 
>> about using another verb such as cast or coerce, instead of validate, for 
>> this typing 
>> (e.g. @spec Keyword.cast!(Enumerable.t(), keyword) :: keyword | no_return 
>> and @spec Map.cast!(Enumerable.t(), keyword) :: map | no_return)?
>>
>> Should I also implement it for Map as well, or maybe add it in a second 
>> PR?
>>
>> Thanks for the idea on Enumerables!
>> Em segunda-feira, 26 de julho de 2021 às 12:47:31 UTC-3, Wojtek Mach 
>> escreveu:
>>
>>> Keyword.validate will accept just a keyword, right? Did you consider 
>>> making it accept any enumerable of pairs, just like Keyword.new does? Same 
>>> for Map.
>>>
>>> I think one particular scenario is something like this:
>>>
>>>     def foo(opts) when is_list(opts) do
>>>       config = Map.validate!(opts, …)
>>>       config.name # the assertive map.key is really convenient here
>>>
>>> what do you think? The only concern, besides feature creep :), is 
>>> perhaps validate is not the best name given it accepts broader set of 
>>> inputs. But then again, Keyword.keyword and in particular Map.map are maybe 
>>> a bit awkward. 
>>>
>>> On July 26, 2021, josevalim <jose....@gmail.com> wrote:
>>>
>>> I debated this with the Elixir team and we agreed on the following API:
>>>     Keyword.validate! :: keyword | no_return    Keyword.validate :: 
>>> {:ok, keyword} | {:error, unknown_keys, missing_keys}
>>> The same functionality would have to be defined for Map.
>>> The API for Keyword.validate! and Map.validate! would be the exact same 
>>> as the one found in Nx.Defn.Kernel.keyword!.
>>> Could you please send a PR? Or open up an issue if you can't submit it 
>>> at the moment. 
>>>
>>> Thanks!On Monday, July 12, 2021 at 12:46:38 PM UTC+2 polva...@gmail.com 
>>> wrote:
>>>
>>> > I would propose to add this to the Kernel module, to mirror the 
>>>> struct! helper. But adding to Keyword also works. Thoughts?
>>>>
>>>> Makes sense! I suggested Keyword mostly because there's the module 
>>>> already, but since we have struct! in Kernel, it might be better to have 
>>>> keyword! there too. Usage would also be nicer this way.
>>>>
>>>> > Should the bang version really raise for redundant options?
>>>>
>>>> As José said, it would help clean out stray options being passed. I can 
>>>> think of a few cases in which I thought one option was being used, but had 
>>>> either a typo or wrong name altogether (think "end" vs "end_datetime" sort 
>>>> of situation).
>>>> However, I can see a less strict version being useful as well. Perhaps 
>>>> there could be a keyword!/3 which accepted options like: keyword!(opts, 
>>>> [extra_keys: true], key1: :default1, key2: :default2)
>>>>
>>>>  -- 
>>>  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.
>>>
>>> To view this discussion on the web visit 
>>> https://groups.google.com/d/msgid/elixir-lang-core/9b83a803-c2c1-49e7-a531-56791607bcaan%40googlegroups.com
>>>  
>>> <https://groups.google.com/d/msgid/elixir-lang-core/9b83a803-c2c1-49e7-a531-56791607bcaan%40googlegroups.com?utm_medium=email&utm_source=footer>
>>> .
>>>
>>> -- 
>> 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.
>>
> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/elixir-lang-core/a96fb19a-8148-41dc-8b45-0e2b9fe755b8n%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/elixir-lang-core/a96fb19a-8148-41dc-8b45-0e2b9fe755b8n%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>>
>

-- 
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/d6187a25-6674-4986-a835-f8a6040d5dfbn%40googlegroups.com.

Reply via email to