On Pitman's “Special forms in Lisp” (2011)
At the end of the day several things made fexprs unnecessary.<p>One was the development of the macro which offered more powerful syntactic transformations (i.e. greater expressive power) in a simpler way.<p>The second was that they weren’t really powerful enough to provide metasyntactic extension at runtime.<p>You could get a lot of that power by running the macroexpander at runtime but I’ve never seen anyone do that…because who really needs it?<p>I worked on the 3-Lisp implementation at PARC.  What I realized was that while indeed it unlocked the power to write metasyntactic operations (I.e. special forms like new control flow) it turned out the same set of existing control flow operators (e.g. cond, booleans, throw) seem to be adequate. The overhead (cognitive and in the implementation) of fexprs isn’t really worth the ability to do things like lazy evaluation and generators when there are already perfectly adequate mechanisms available