Programing: LISP is Not Functional!

Perm URL with updates: http://xahlee.org/comp/lisp_non-functional.html

Dear lispers, brace yourself, stinging damnation is coming forthwith!

the more i learn about Common Lisp, the more i think it's one fuckedup soup. (setf, rotatef, are recent examples)

also, the more i code in lisp (elisp), the more i find it non-functional.

lots, lots, of mutations built-in in the lang in a way that forces you to be non-functional. Quick 1 minute typing:

• destructive sort.

• setq setq setq.

• tons of global vars, not just for emacs environment such as buffer, mode states, etc, which are arguably necessary. But, for things like “match-string”.

• lisp's list, of cons, is one fucking DAMNATION. Along with it comes rampant use of pop, push. Any non-trivial coding in lisp is fucking like perl now, except that dealing with list and nested list in perl is actually much more easier than in lisp.

there's a good solution to lisp's non-functional ways.

BAN lispers from using list or cons. Everything should be vector/array instead.

everytime a cons is involved, lispers should get a electric shock.

that will immediately fix majority of lisp's non-functional programing in practice.

though, i'll have to say, the more i read about Clojure, the better it seems. It is very functional, the savior of the lisp name.