this makes arguments on both sides of mine https://kyo.iroiro.party/en/posts/100-percent-lisp/ the reason i think an explicitly multi-layered abstraction like C->lisp works is because it can be used to set strict bootstrapping requirements. you can do bootstrapping very well without it (see gcc) but whereas C is often derided as an unsafe base layer, it also happens to be the most portable one—and this tends to remain the case when using modern C with #embed and _Generic and defer