&gt; I&#x27;m assuming the learner is coming from an imperative language background.<p>Well, Emacs Lisp is pretty imperative: it doesn&#x27;t optimise tail calls, so loops are often needed; its distinct namespaces&#x2F;special-forms for functions and &quot;values&quot; (which includes anonymous functions) makes functional style less attractive in some situations; many tasks are achieved through destructive update of (often temporary) buffers; Emacs itself is controlled by mutating dynamic or global variables; etc.<p>I would say Emacs Lisp is much closer to imperative languages like Python, than it is to syntactically-similar languages like Scheme, for example.