On Saturday, September 30, 2017 at 2:46:04 PM UTC+3, José Valim wrote: > > No, they have to "use something". Being unable to have a magic command > that modifies all modules globally is what helps meta-programming in Elixir > be a bit sane. > > > Okay, then small shell (or perl :) script will do it :) :P
> > *José Valimwww.plataformatec.com.br > <http://www.plataformatec.com.br/>Founder and Director of R&D* > > On Sat, Sep 30, 2017 at 1:42 PM, <[email protected] <javascript:>> wrote: > >> >> >> On Saturday, September 30, 2017 at 2:36:30 PM UTC+3, Louis Pilfold wrote: >>> >>> Heya >>> >>> You could write a library that does this rather than modifying Elixir. >>> It would be a cool project :) >>> >>> Cheers, >>> Louis >>> >> >> I wonder if I can redefine 'def' macro and inject it into every module >> without modifying module to have 'use Something' in them. >> >> /Gaspar >> >> >> >> >>> >>> On Fri, 29 Sep 2017, 18:06 , <[email protected]> wrote: >>> >>>> Hi all! >>>> >>>> I increasingly find myself writing more or less exactly same logic as >>>> in @type/@spec in body of the function to check incoming arguments. >>>> >>>> Would it be helpful if Elixir compiler could wrap function into assert >>>> check for incoming arguments and also result generated based on typespec? >>>> >>>> I think it would be very useful for >>>> >>>> - while running unit tests immediately see where components interaction >>>> breaks >>>> - keeping unit tests data in sync while developing - creates more >>>> crashes when some stub/test data does not comply with changed logic in >>>> function >>>> - running system and checking where it breaks the contracts between >>>> components in run-time/while debugging (dyalizer does a great job to >>>> extract information during static analysis phase, but runtime can provide >>>> more incorrect data :) >>>> - encourage writing more typespecs because benefits of doing so will be >>>> visible immediately and not when (occasionally) dyalizer will be run. So >>>> make it type specification first class citizen that is not just for >>>> documenting code, but also to enforce constraints. >>>> >>>> I personally would also love to have possibility for extended typespec >>>> that would allow also specify relation between arguments too. Like >>>> assert(arg1 + arg2 > 0). >>>> >>>> It seems that it may be achieved mostly by rewriting def/defp macros >>>> and embedding asserts code generated from @spec around function body. >>>> >>>> This will slow down the execution of code and should be compiler option >>>> to turn it on/off for production/dev/testing environment separately with >>>> on >>>> setting in development/testing by default. >>>> >>>> What do you think? >>>> >>>> /Gaspar >>>> >>>> -- >>>> 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/638bb1fe-5276-49a3-9013-a784625226ea%40googlegroups.com >>>> >>>> <https://groups.google.com/d/msgid/elixir-lang-core/638bb1fe-5276-49a3-9013-a784625226ea%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] <javascript:>. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/elixir-lang-core/0c977fbd-d5a9-4c74-8209-741b550ce43e%40googlegroups.com >> >> <https://groups.google.com/d/msgid/elixir-lang-core/0c977fbd-d5a9-4c74-8209-741b550ce43e%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/5094192d-f903-48c7-b942-12c68c7ef133%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.
