simplify and fix

This commit is contained in:
2025-08-30 00:52:30 +02:00
parent 1a85ca03f7
commit 5eba1c8ce1

View File

@@ -682,23 +682,13 @@ module SExprMacroExp = struct
let rec eval (ctx: (string * (SExpr.t * SExpr.t)) list) s =
let open SExpr in
let sli, ctx = match s with
Cons(l,r) ->
(* Cons(1, Cons(2, Nil))
l: Cons(1, Nil)
r: Cons(Cons(2, Nil), Nil)
append r l: Cons(1, Cons(Cons(2, Nil), Nil))
*)
let l, ctx = eval ctx l in
let r, ctx = eval ctx r in
begin match append r l with
Cons(l, Cons(r, Nil)) -> li1 @@ Cons(l,r)
| Nil -> Nil
| x -> raise (FIXME x)
end, ctx
| s -> li1 s, ctx
let s, ctx = if is_list s then
aggr_flat_map eval ctx s
else
s, ctx
in
aggr_flat_map check_expands_while ctx sli
let s, ctx = check_expands_while ctx s in
s, ctx
(* expr -> list(new exprs) * bool:changed * ctx *)
and check_expands ctx s =
let open SExpr in