emacs.d/clones/lisp/www.cliki.net/curly.html
2022-10-07 15:47:14 +02:00

70 lines
No EOL
7 KiB
HTML

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>CLiki: curly</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=curly">
<link rel="stylesheet" href="static/css/style.css">
<link rel="stylesheet" href="static/css/colorize.css">
</head>
<body>
<span class="hidden">CLiki - curly</span>
<div id="content"><div id="content-area"><div id="article-title">curly</div><div id="article">Curly is set of two reader macros for easy function currying and
composition. It was inspired Arc's syntax for currying, using
square brackets. Curly creates anonymous functions (lambdas) with
literal function composition instead of trying smarter approach
(like using (REDUCE #'FUNCALL ...)) so that the compiler is able to
do more optimizations.<p>Examples of Curly usage:<p><div class="code"><span class="nonparen">CURLY&gt; '[foo]
<span class="paren1">(<span class="nonparen"><a href="https://www.cliki.net/site/HyperSpec/Body/any_lambda.html" class="symbol"><i><span class="symbol">LAMBDA</span></i></a> <span class="paren2">(<span class="nonparen"><span class="keyword">#:G2705</span></span>)</span> <span class="paren2">(<span class="nonparen">FOO <span class="keyword">#:G2705</span></span>)</span></span>)</span>
CURLY&gt; '[foo bar]
<span class="paren1">(<span class="nonparen"><a href="https://www.cliki.net/site/HyperSpec/Body/any_lambda.html" class="symbol"><i><span class="symbol">LAMBDA</span></i></a> <span class="paren2">(<span class="nonparen"><span class="keyword">#:G2706</span></span>)</span> <span class="paren2">(<span class="nonparen">FOO BAR <span class="keyword">#:G2706</span></span>)</span></span>)</span>
CURLY&gt; '[foo bar * baz]
<span class="paren1">(<span class="nonparen"><a href="https://www.cliki.net/site/HyperSpec/Body/any_lambda.html" class="symbol"><i><span class="symbol">LAMBDA</span></i></a> <span class="paren2">(<span class="nonparen"><span class="keyword">#:G2709</span></span>)</span> <span class="paren2">(<span class="nonparen">FOO BAR <span class="keyword">#:G2709</span> BAZ</span>)</span></span>)</span>
CURLY&gt; '{foo bar}
<span class="paren1">(<span class="nonparen"><a href="https://www.cliki.net/site/HyperSpec/Body/any_lambda.html" class="symbol"><i><span class="symbol">LAMBDA</span></i></a> <span class="paren2">(<span class="nonparen"><span class="keyword">#:G2714</span></span>)</span> <span class="paren2">(<span class="nonparen">FOO <span class="paren3">(<span class="nonparen">BAR <span class="keyword">#:G2714</span></span>)</span></span>)</span></span>)</span>
CURLY&gt; '{foo bar baz}
<span class="paren1">(<span class="nonparen"><a href="https://www.cliki.net/site/HyperSpec/Body/any_lambda.html" class="symbol"><i><span class="symbol">LAMBDA</span></i></a> <span class="paren2">(<span class="nonparen"><span class="keyword">#:G2715</span></span>)</span> <span class="paren2">(<span class="nonparen">FOO <span class="paren3">(<span class="nonparen">BAR <span class="paren4">(<span class="nonparen">BAZ <span class="keyword">#:G2715</span></span>)</span></span>)</span></span>)</span></span>)</span>
CURLY&gt; '{foo <span class="paren1">(<span class="nonparen">bar 23</span>)</span> baz quux}
<span class="paren1">(<span class="nonparen"><a href="https://www.cliki.net/site/HyperSpec/Body/any_lambda.html" class="symbol"><i><span class="symbol">LAMBDA</span></i></a> <span class="paren2">(<span class="nonparen"><span class="keyword">#:G2721</span></span>)</span> <span class="paren2">(<span class="nonparen">FOO <span class="paren3">(<span class="nonparen">BAR 23 <span class="paren4">(<span class="nonparen">BAZ <span class="paren5">(<span class="nonparen">QUUX <span class="keyword">#:G2721</span></span>)</span></span>)</span></span>)</span></span>)</span></span>)</span>
CURLY&gt; '{foo <span class="paren1">(<span class="nonparen">bar 16</span>)</span> <span class="paren1">(<span class="nonparen">baz 23 <a href="https://www.cliki.net/site/HyperSpec/Body/any_st.html" class="symbol">*</a> 42</span>)</span> quux}
<span class="paren1">(<span class="nonparen"><a href="https://www.cliki.net/site/HyperSpec/Body/any_lambda.html" class="symbol"><i><span class="symbol">LAMBDA</span></i></a> <span class="paren2">(<span class="nonparen"><span class="keyword">#:G2724</span></span>)</span> <span class="paren2">(<span class="nonparen">FOO <span class="paren3">(<span class="nonparen">BAR 16 <span class="paren4">(<span class="nonparen">BAZ 23 <span class="paren5">(<span class="nonparen">QUUX <span class="keyword">#:G2724</span></span>)</span> 42</span>)</span></span>)</span></span>)</span></span></span></span></div><p>Latest version of Curly can be obtained on its GitHub page: <a href="https://github.com/mpasternacki/curly">https://github.com/mpasternacki/curly</a><p><hr>
<a href="convenience&#32;library.html" class="category">convenience library</a></div></div>
<div id="footer" class="buttonbar"><ul><li><a href="curly.html">Current version</a></li>
<li><a href="https://www.cliki.net/site/history?article=curly">History</a></li>
<li><a href="https://www.cliki.net/site/backlinks?article=curly">Backlinks</a></li><li><a href="https://www.cliki.net/site/edit-article?title=curly&amp;from-revision=3808968678">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&#32;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>