hylang/hy — pull request #579 by xcthulhu (2014-04-27 17:05:32+00:00)
Title: Fixes #576 & Enforces That `let` Has Dynamic Scope

Old behavior:
```hy
=> (disassemble '(let [[x "test"] [y x] z] (foo)) true)
def _hy_anon_fn_1():
x = u'test'
y = x
z = None
return foo()
_hy_anon_fn_1()
=> (import functools)
=> (let [[functools.partial "foo"]] functools.partial)
u'foo'
```

New behavior:
```hy
=> (disassemble '(let [[x "test"] [y x] z] (foo)) true)
def _hy_anon_fn_1(x, y, z):
x = u'test'
y = x
return foo()
_hy_anon_fn_1(None, None, None)
=> (import functools)
=> (let [[functools.partial "foo"]] functools.partial)
File "", line 1, column 7

(let [[functools.partial "foo"]] functools.partial)
^-----------------------^
HyMacroExpansionError: let variables cannot contain periods
```