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, maen...@joshmartin.ch 
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 <maen...@joshmartin.ch> 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 elixir-lang-co...@googlegroups.com.
>>> 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 elixir-lang-core+unsubscr...@googlegroups.com.
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.

Reply via email to