diff --git a/hy/core/bootstrap.py b/hy/core/bootstrap.py index 50efc66..4c80a9f 100644 --- a/hy/core/bootstrap.py +++ b/hy/core/bootstrap.py @@ -133,12 +133,17 @@ def rest_macro(tree): @macro("let") def let_macro(tree): tree.pop(0) # "let" - ret = tree.pop(0) # vars + variables = tree.pop(0) # tree is now the body expr = HyExpression([HySymbol("fn"), HyList([])]) - for var in ret: - expr.append(HyExpression([HySymbol("setf"), var[0], var[1]])) + for var in variables: + if isinstance(var, list): + expr.append(HyExpression([HySymbol("setf"), + var[0], var[1]])) + else: + expr.append(HyExpression([HySymbol("setf"), + var, HySymbol("None")])) for stmt in tree: expr.append(stmt) diff --git a/tests/native_tests/language.hy b/tests/native_tests/language.hy index 1480d94..654ccf3 100644 --- a/tests/native_tests/language.hy +++ b/tests/native_tests/language.hy @@ -479,7 +479,8 @@ (defn test-let [] "NATIVE: test let works rightish" - (assert (= (let [[x 1] [y 2] [z 3]] (+ x y z)) 6))) + (assert (= (let [[x 1] [y 2] [z 3]] (+ x y z)) 6)) + (assert (= (let [[x 1] a [y 2] b] (if a 1 2)) 2))) (defn test-if-mangler []