No, there is intentionally no way to globally apply a macro. On Saturday, September 30, 2017 at 7:42:54 AM UTC-4, [email protected] 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]. To view this discussion on the web visit https://groups.google.com/d/msgid/elixir-lang-core/b6b958cf-1987-4412-8e4e-c00d37af53c4%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.
