Can you elaborate on the safety provided by doing `%Struct{} = ` on a
function? There are no compile time checks that calls to that function are
actually of that struct type, just runtime checks on the data. Put another
way this isn't really a type check, but an assertion.
On Friday, February 16, 2018 at 6:38:07 AM UTC-5, [email protected]
wrote:
>
> Hey Louis,
>
> I think it should include compile time checks. Mostly I would expect those
> for function headers, case blocks and with blocks.
>
> Dialyzer already checks many of those conditions, but I would like to go a
> step further.
> Your mentioned library looks really interesting. Making it work together
> with existing type specifications would be really cool.
>
> With for example structs, I can achieve safety really easy by adding
> *%Struct{}
> = my_input* to the function header.
>
> I would like to have a mechanism that works similarly, but additionally
> checks uncovered types of a sum. (If you would for example not cover the
> None of a Maybe)
>
> I think that this could tremendously improve the code quality.
>
> Cheers,
> Jony
>
> Am Freitag, 16. Februar 2018 11:57:00 UTC+1 schrieb Louis Pilfold:
>>
>> Hey Jony
>>
>> Would this involve some form of compile time type checking for these
>> values? If not we already have them in the form of tuples.
>>
>> @type result :: {:ok, string()} | {:error, string()}
>>
>> If you want compile time checks this would be more difficult. I've
>> experimented a little with compile time checks with macros, check it out
>> here -> https://github.com/lpil/sum
>>
>> Cheers,
>> Louis
>>
>> On Fri, 16 Feb 2018 at 10:33 <[email protected]> wrote:
>>
>>> Hi all,
>>>
>>> First I want to thank you all for your great work on the elixir language!
>>>
>>> Have there been some thoughts to introduce Tagged Unions into elixir?
>>> I would really love to use sum types like Either or simple enums in my
>>> daily work and have some support of the language in handling them.
>>>
>>> What do you think about this?
>>>
>>> Cheers,
>>> Jony
>>>
>>> --
>>> 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/4052d8d9-6eda-46c9-b259-fb0f2e041120%40googlegroups.com
>>>
>>> <https://groups.google.com/d/msgid/elixir-lang-core/4052d8d9-6eda-46c9-b259-fb0f2e041120%40googlegroups.com?utm_medium=email&utm_source=footer>
>>> .
>>> 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/f72949db-50aa-433e-abb9-f5c1ba518008%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.