108 lines
No EOL
8 KiB
HTML
108 lines
No EOL
8 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
|
<title>CLiki: elisp</title>
|
|
<link rel="alternate" type="application/atom+xml" title="ATOM feed of edits to current article"
|
|
href="https://www.cliki.net/site/feed/article.atom?title=elisp">
|
|
<link rel="stylesheet" href="static/css/style.css">
|
|
<link rel="stylesheet" href="static/css/colorize.css">
|
|
</head>
|
|
|
|
<body>
|
|
<span class="hidden">CLiki - elisp</span>
|
|
<div id="content"><div id="content-area"><div id="article-title">elisp</div><div id="article"><a href="Emacs.html" class="category">Emacs</a> Lisp<p>A dialect of Lisp used by the <a href="Emacs.html" class="internal">Emacs</a> text editor.
|
|
It includes hordes of functions directed to (go figure) editing text.<p>Perhaps it is a common route into the Lisp world, since anyone who gets to know Emacs will be exposed to it? Hackers naturally will start hacking, and it does seem to be hack-friendly - at least on the surface.<p>(Elisp was also the name of a Lisp dialect by Chuck Hedrick (and others?)
|
|
at Rutgers University. It ran on DEC-20 machines.)<p><hr><p>While there are extensions that add Common-Lisp-like functionality to it, it is quite distinct from Common Lisp. In particular it is <i>dynamically scoped</i> rather than <i>lexically scoped</i>. This can cause large amounts of confusion for programmers used to lexical scoping as in Common Lisp. (One reason for this dynamic scoping is said to be that RMS felt it would be easier to write editing code with dynamic scoping. Some people suppose that the real reason was political; to be incompatible with the emerging work on Common Lisp.)<p>
|
|
<i>Taken from <a href="Lisp newbie.html" class="internal">Lisp newbie</a> since I would like to digress,</i><p>[...] I'm hacking elisp because it's nearest and most convenient. I discover it doesn't implement <tt>#'func</tt> in any meaningful way, given what I've seen of <a href="On Lisp.html" class="internal">On Lisp</a> and CMUCL.<p><i>emacs-lisp is bad for your health</i><p>Can you enumerate? So is driving to work, but the C-x C-e thing is very handy. Should I get a "proper <a href="lisp IDE.html" class="internal">lisp IDE</a>"? I like Emacs. 8-(<p> <i>Try <a href="ILISP.html" class="internal">ILISP</a> (or <a href="SLIME.html" class="internal">SLIME</a>, which has probably replaced ILISP for most people) - it's an emacs mode for real lisp, and very nearly as handy as the builtin lisp interaction mode</i><p> <ul>
|
|
<li>elisp has dynamic scope as above, and this can cause headaches
|
|
</li>
|
|
<li>elisp's symbols are case sensitive (This seems good to me. Why does CL waste time doing stricmp when strcmp is a smidge faster?)
|
|
<br><i>CL's symbols are case-sensitive too. It's just that the reader upper-cases everything by default. Try (eq '|abc| 'abc) sometime.</i>
|
|
<br><i>Uppercase in the English sense - in turkish, the uppercase of 'i' is not 'I'</i>
|
|
</li>
|
|
<li>elisp at v21.2 does not implement <a href="tail recursion.html" class="internal">tail recursion</a>, but this is merely an efficiency problem. Doesn't stop you writing TR-able code.
|
|
</li>
|
|
<li>elisp has no package system, which causes namespacing issues. You might counter that this `doesn't bite you until you have a large program', but you're sharing that namespace with all the other lisp in emacs, and emacs already <i>is</i> a large program ... Currently, packages solve that by prepending [packagename]- before their identifiers. Emacs hackers are used to having very long identifiers to type.
|
|
</li>
|
|
<li>elisp has sucky arithmetic: no bignums, no rationals, silent overflow. <tt> (/ 6 4) => 1</tt> - what's with that?<br>
|
|
<i>Looks like an int to me. That won't bother the C programmers, but I can see it's much less neat than returning 3/2.</i>
|
|
</li>
|
|
<li>elisp has sucky GC too, from what I understand</li>
|
|
</ul><p><hr>
|
|
Emacs Wiki: <a href="https://www.emacswiki.org/">https://www.emacswiki.org/</a><p><i>Despite the long list of technical imperfections, I find programming in Emacs Lisp extremely pleasant. There is some very neat interaction between the language and the editor. For example, if you are using Emacs buffers as "network buffers" (i.e. containing data for you to decode), then you can do nice things like single-step code in the debugger while watching how the point moves around in the network buffer containing a message you're decoding. I love it! -- LukeGorrie</i><p>Search:
|
|
<ul>
|
|
<li>
|
|
<a href="CL-Emacs.html" class="internal">CL-Emacs</a> -
|
|
Various people have proposed an <a href="emacs.html" class="category">emacs</a>-like editor written in Common
|
|
</li>
|
|
<li>
|
|
<a href="Editing Lisp Code with Emacs.html" class="internal">Editing Lisp Code with Emacs</a> -
|
|
Keyboard tips
|
|
</li>
|
|
<li>
|
|
<a href="elisp.html" class="internal">elisp</a> -
|
|
<a href="Emacs.html" class="category">Emacs</a> Lisp
|
|
</li>
|
|
<li>
|
|
<a href="Emacs customizations.html" class="internal">Emacs customizations</a> -
|
|
Here I hope we can collect a bunch of .emacs files that display the power and versatility of Emacs used to program Lisp
|
|
</li>
|
|
<li>
|
|
<a href="GNU emacs.html" class="internal">GNU emacs</a> -
|
|
<a href="GNU emacs.html" class="category">GNU emacs</a> is a popular <a href="emacs.html" class="category">emacs</a> implementation
|
|
</li>
|
|
<li>
|
|
<a href="GUD.html" class="internal">GUD</a> -
|
|
Grand Unified Debugger mode for gdb and other debuggers under <a href="Emacs.html" class="category">Emacs</a>
|
|
</li>
|
|
<li>
|
|
<a href="Hyperspec-Info.html" class="internal">Hyperspec-Info</a> -
|
|
Simple util to view draft of <a href="Hyperspec.html" class="internal">Hyperspec</a> in fast, easy Info format
|
|
</li>
|
|
<li>
|
|
<a href="José María Ruiz.html" class="internal">José María Ruiz</a> -
|
|
Hi, I'm a <a href="Person.html" class="category">Person</a> and a CS degree
|
|
</li>
|
|
<li>
|
|
<a href="Mark Davidson.html" class="internal">Mark Davidson</a> -
|
|
I have been working with these infernal machines for over 22 years, and have dabbled with Lisp over time..
|
|
</li>
|
|
</ul></div></div>
|
|
<div id="footer" class="buttonbar"><ul><li><a href="elisp.html">Current version</a></li>
|
|
<li><a href="https://www.cliki.net/site/history?article=elisp">History</a></li>
|
|
<li><a href="https://www.cliki.net/site/backlinks?article=elisp">Backlinks</a></li><li><a href="https://www.cliki.net/site/edit-article?title=elisp&from-revision=3771282100">Edit</a></li><li><a href="https://www.cliki.net/site/edit-article?create=t">Create</a></li></ul></div>
|
|
</div>
|
|
<div id="header-buttons" class="buttonbar">
|
|
<ul>
|
|
<li><a href="https://www.cliki.net/">Home</a></li>
|
|
<li><a href="https://www.cliki.net/site/recent-changes">Recent Changes</a></li>
|
|
<li><a href="CLiki.html">About</a></li>
|
|
<li><a href="Text Formatting.html">Text Formatting</a></li>
|
|
<li><a href="https://www.cliki.net/site/tools">Tools</a></li>
|
|
</ul>
|
|
<div id="search">
|
|
<form action="https://www.cliki.net/site/search">
|
|
<label for="search_query" class="hidden">Search CLiki</label>
|
|
<input type="text" name="query" id="search_query" value="" />
|
|
<input type="submit" value="search" />
|
|
</form>
|
|
</div>
|
|
</div>
|
|
<div id="pageheader">
|
|
<div id="header">
|
|
<span id="logo">CLiki</span>
|
|
<span id="slogan">the common lisp wiki</span>
|
|
<div id="login"><form method="post" action="https://www.cliki.net/site/login">
|
|
<label for="login_name" class="hidden">Account name</label>
|
|
<input type="text" name="name" id="login_name" class="login_input" />
|
|
<label for= "login_password" class="hidden">Password</label>
|
|
<input type="password" name="password" id="login_password" class="login_input" />
|
|
<input type="submit" name="login" value="login" id="login_submit" /><br />
|
|
<div id="register"><a href="https://www.cliki.net/site/register">register</a></div>
|
|
<input type="submit" name="reset-pw" value="reset password" id="reset_pw" />
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</body></html> |