9
1
2
3
4
5
6
7
›
define_rewrite_rules
(
[
where
,
expr
.where
(
a
=
b
,
rest
)
,
(
(
a
)
=>
expr
.where
(
rest
)
)
(
b
)
]
,
[
where
,
expr
.where
(
a
=
b
)
,
(
(
a
)
=>
expr
)
(
b
)
]
,
[
where
,
expr
.where
(
)
,
expr
]
,
)
;
console
.log
(
x
+
y
)
.where
(
x
=
1
,
y
=
x
+
2
)
;
9
1
2
›
(
(
x$1
)
=>
(
(
y$2
)
=>
console
.log
(
x$1
+
y$2
)
)
(
x$1
+
2
)
)
(
1
)
;
step: 8
DONE
program:
slice:
call_expression:
parenthesized_expression:
(
arrow_function:
formal_parameters:
(
x$1
)
=>
call_expression:
parenthesized_expression:
(
arrow_function:
formal_parameters:
(
y$2
)
=>
call_expression:
member_expression:
console
.
log
(
binary_expression:
x$1
+
y$2
)
)
(
binary_expression:
x$1
+
2
)
)
(
1
)