>   @spec word() :: boolean()

Hi Boris,
So if there is a function `word/0` how would you know this spec refers
to word/1 and not word/0?

On Thu, 2 Jun 2022 17:16:45 +0300
Boris Kuznetsov <m...@achempion.com> wrote:

> Currently, if you want to add spec to functions, you have to use
> @spec with a function name to define all argument / response types:
> 
> defmodule StringHelpers do
>   @spec long_word?(word()) :: boolean()
>   def long_word?(word) when is_binary(word) do
>     String.length(word) > 8
>   end
> end
> 
> I think, it would be nice to reduce "visual noise" of spec definition
> by allowing to omit the data we already know.
> 
> defmodule StringHelpers do
>   @spec word() :: boolean()
>   def long_word?(word) when is_binary(word) do
>     String.length(word) > 8
>   end
> end
> 
> With this syntax, we can define argument and response types and
> automatically treat it as spec for following long_word?/1 function.
> 
> What do you think?
> 
> Also, in case of multiple arguments we can either wrap it in
> parentheses or just use a comma for separation.
> 

-- 
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/6299fc7e.1c69fb81.69283.7ad6SMTPIN_ADDED_MISSING%40gmr-mx.google.com.

Reply via email to