Created by: natefaubion
Fixes #215 (closed)
This is a complete rewrite of letstx that handles all sorts of edge cases. The primary problem with the previous letstx was that it immediately called return which means it couldn't be used in branches or loops. This rewrite avoids withSyntax and syntaxCase completely, and has a much simpler expansion. It mimics how let scope works, and can shadow pattern vars within an inner block without it affecting the outer pattern scope. The rewrite also has a nice consequence of allowing you to load multiple tokens into a pattern var without having to use a repeater, which is far more intuitive. Loading repeaters is still supported though for when you need it.
withSyntax should be considered deprecated, and will likely be removed with the 0.5.0 bump.