From 53928bdeb5d921a0abe8836057c1e77ee3adfd9d Mon Sep 17 00:00:00 2001 From: Joscha Date: Fri, 18 Nov 2022 18:28:06 +0100 Subject: [PATCH] Desugar destructuring via builtin --- README.md | 45 +++++++++++++-------------------------------- 1 file changed, 13 insertions(+), 32 deletions(-) diff --git a/README.md b/README.md index 8655a87..a3a4120 100644 --- a/README.md +++ b/README.md @@ -84,42 +84,23 @@ In the following sections, ### Table destructuring -`{ a, b, foo: c } = d` is converted to +`{ foo, bar: baz } = a` is converted to ``` -'{ - local expr = 'arg()[0], - local scope = 'arg()[1], - scope.a = expr[0], - scope.b = expr[1], - scope.c = expr.foo, -}{d, 'scope()} -``` -which is approximately equal to -``` -(function{expr, scope} '{ - scope.a = expr[0], - scope.b = expr[1], - scope.c = expr.foo, -}){d, 'scope()} +'destructure{ + 'scope(), + { "foo", bar: "baz" }, + a, +} ``` -`local { a, b, foo: c } = d` is converted to +`local { foo, bar: baz } = a` is converted to ``` -'{ - local expr = 'arg()[0], - local scope = 'arg()[1], - 'setraw(scope, "a", expr[0]), - 'setraw(scope, "b", expr[1]), - 'setraw(scope, "c", expr.foo), -}{d, 'scope()} -``` -which is approximately equal to -``` -(function{expr, scope} '{ - 'setraw(scope, "a", expr[0]), - 'setraw(scope, "b", expr[1]), - 'setraw(scope, "c", expr.foo), -}){d, 'scope()} +'destructure{ + 'scope(), + { "foo", bar: "baz" }, + a, + local: true, +} ``` ### Function definitions