![Javascript to Elm artwork](https://is5-ssl.mzstatic.com/image/thumb/Podcasts123/v4/ae/06/b5/ae06b52b-64ae-9a7e-1f31-b293a2085da9/mza_3840978457865575010.png/100x100bb.jpg)
71: Macros ?
Javascript to Elm
English - February 28, 2019 11:00 - 21 minutes - 17.6 MB - ★★★★★ - 4 ratingsTechnology elm javascript programming Homepage Download Apple Podcasts Google Podcasts Overcast Castro Pocket Casts RSS feed
Just realized that looking at language extensions sent me down a rabbit hole on Macros, and I might have gotten myself totally turned around. 🤷🏼♀️
bit of history
Macros can be used to make tasks less repetitive by representing a complicated sequence of keystrokes, mouse movements, commands, or other types of input. In computer programming, macros are a tool that allows a developer to re-use code.
best explianation i have found so far
Fundamentally, macros are a way of writing code that writes other code, which is known as metaprogramming. rust docs
macro is going to happen at compile time. where a function is going to happen at run time.
code that writes code. 🤔 This is less readable, understandable, and maintainable then general functions.
Two types of macrosDeclaritive w/ general metaprogramming
Matching on patterns and replacing codeProdecural more like functions
given input -> producing output (pure)Problem babel macros sets to solve solution
They can lead to confusion because when looking at code in a project, you might not know that there’s a plugin transforming that code. They have to be globally configured or configured out-of-band (in a .babelrc or webpack config). They can conflict in very confusing ways due to the fact that all babel plugins run simultaneously (on a single walk of Babel’s AST).Solution
transformations with: zero config importabilityExplicit is often a better pattern than implicit because it requires others to understand how things are globally configured. This is in this spirit are babel-plugin-macros designed. However, some things do need to be implicit, and those kinds of babel plugins can’t be turned into macros.
the idea of syntax macro it’s well suited for babel-plugin-macros What would it take to enable JS Macros to open stage proposals to actual implementations? Picks Resources FollowJavaScript to Elm
Twitter: @jstoelmEmail: [email protected]
Jesse Tomchak
Twitter: @jtomchak