98 lines
No EOL
8.7 KiB
HTML
98 lines
No EOL
8.7 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
|
<title>CLiki: snakes</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=snakes">
|
|
<link rel="stylesheet" href="static/css/style.css">
|
|
<link rel="stylesheet" href="static/css/colorize.css">
|
|
</head>
|
|
|
|
<body>
|
|
<span class="hidden">CLiki - snakes</span>
|
|
<div id="content"><div id="content-area"><div id="article-title">snakes</div><div id="article">Python style generators for Common Lisp. Includes a port of itertools.<p>Examples:
|
|
<div class="code"><span class="nonparen"><span class="paren1">(<span class="nonparen"><i><span class="symbol">defgenerator</span></i> some-numbers <span class="paren2">(<span class="nonparen"></span>)</span>
|
|
<span class="paren2">(<span class="nonparen"><a href="https://www.cliki.net/site/HyperSpec/Body/mac_loop.html" class="symbol"><i><span class="symbol">loop</span></i></a> for i from 1 upto 3 <a href="https://www.cliki.net/site/HyperSpec/Body/mac_docm_dost.html" class="symbol">do</a> <span class="paren3">(<span class="nonparen">yield i</span>)</span></span>)</span>
|
|
<span class="paren2">(<span class="nonparen"><a href="https://www.cliki.net/site/HyperSpec/Body/fun_writecm_p_rintcm_princ.html" class="symbol">print</a> 'some-message</span>)</span>
|
|
<span class="paren2">(<span class="nonparen"><a href="https://www.cliki.net/site/HyperSpec/Body/mac_loop.html" class="symbol"><i><span class="symbol">loop</span></i></a> for i from 8 upto 9 <a href="https://www.cliki.net/site/HyperSpec/Body/mac_docm_dost.html" class="symbol">do</a> <span class="paren3">(<span class="nonparen">yield i</span>)</span></span>)</span></span>)</span>
|
|
<span class="comment">;; =>
|
|
</span>SOME-NUMBERS
|
|
|
|
<span class="paren1">(<span class="nonparen">do-generator <span class="paren2">(<span class="nonparen">item <span class="paren3">(<span class="nonparen">some-numbers</span>)</span></span>)</span>
|
|
<span class="paren2">(<span class="nonparen"><a href="https://www.cliki.net/site/HyperSpec/Body/mac_whencm_unless.html" class="symbol">when</a> <span class="paren3">(<span class="nonparen">< 3 item</span>)</span>
|
|
<span class="paren3">(<span class="nonparen"><a href="https://www.cliki.net/site/HyperSpec/Body/mac_return.html" class="symbol">return</a> item</span>)</span></span>)</span></span>)</span>
|
|
<span class="comment">;; =>
|
|
</span>SOME-MESSAGE
|
|
8
|
|
</span></div><p>Pipe-able generator:
|
|
<div class="code"><span class="nonparen"><span class="paren1">(<span class="nonparen"><i><span class="symbol">defgenerator</span></i> add2 <span class="paren2">(<span class="nonparen">some-gen</span>)</span>
|
|
<span class="paren2">(<span class="nonparen">do-generator <span class="paren3">(<span class="nonparen">x some-gen</span>)</span>
|
|
<span class="paren3">(<span class="nonparen">yield <span class="paren4">(<span class="nonparen"><a href="https://www.cliki.net/site/HyperSpec/Body/any_pl.html" class="symbol">+</a> 2 x</span>)</span></span>)</span></span>)</span></span>)</span>
|
|
<span class="comment">;; =>
|
|
</span>ADD2
|
|
|
|
<span class="paren1">(<span class="nonparen">generator->list <span class="paren2">(<span class="nonparen">add2 <span class="paren3">(<span class="nonparen">some-numbers</span>)</span></span>)</span></span>)</span>
|
|
<span class="comment">;; =>
|
|
</span>SOME-MESSAGE
|
|
<span class="paren1">(<span class="nonparen">3 4 5 10 11</span>)</span>
|
|
</span></div><p>Yield-all:
|
|
<div class="code"><span class="nonparen"><span class="paren1">(<span class="nonparen"><i><span class="symbol">defgenerator</span></i> flatten <span class="paren2">(<span class="nonparen"><a href="https://www.cliki.net/site/HyperSpec/Body/any_list.html" class="symbol">list</a></span>)</span>
|
|
<span class="paren2">(<span class="nonparen"><a href="https://www.cliki.net/site/HyperSpec/Body/mac_whencm_unless.html" class="symbol">when</a> <a href="https://www.cliki.net/site/HyperSpec/Body/any_list.html" class="symbol">list</a>
|
|
<span class="paren3">(<span class="nonparen"><a href="https://www.cliki.net/site/HyperSpec/Body/mac_cond.html" class="symbol"><i><span class="symbol">cond</span></i></a>
|
|
<span class="paren4">(<span class="nonparen"><span class="paren5">(<span class="nonparen"><a href="https://www.cliki.net/site/HyperSpec/Body/any_atom.html" class="symbol">atom</a> <a href="https://www.cliki.net/site/HyperSpec/Body/any_list.html" class="symbol">list</a></span>)</span>
|
|
<span class="paren5">(<span class="nonparen">yield <a href="https://www.cliki.net/site/HyperSpec/Body/any_list.html" class="symbol">list</a></span>)</span></span>)</span>
|
|
<span class="paren4">(<span class="nonparen"><a href="https://www.cliki.net/site/HyperSpec/Body/any_t.html" class="symbol">t</a>
|
|
<span class="paren5">(<span class="nonparen">yield-all <span class="paren6">(<span class="nonparen">flatten <span class="paren1">(<span class="nonparen"><a href="https://www.cliki.net/site/HyperSpec/Body/acc_carcm_cdr_darcm_cddddr.html" class="symbol">car</a> <a href="https://www.cliki.net/site/HyperSpec/Body/any_list.html" class="symbol">list</a></span>)</span></span>)</span></span>)</span>
|
|
<span class="paren5">(<span class="nonparen">yield-all <span class="paren6">(<span class="nonparen">flatten <span class="paren1">(<span class="nonparen"><a href="https://www.cliki.net/site/HyperSpec/Body/acc_carcm_cdr_darcm_cddddr.html" class="symbol">cdr</a> <a href="https://www.cliki.net/site/HyperSpec/Body/any_list.html" class="symbol">list</a></span>)</span></span>)</span></span>)</span></span>)</span></span>)</span></span>)</span></span>)</span>
|
|
<span class="comment">;; =>
|
|
</span>FLATTEN
|
|
|
|
<span class="paren1">(<span class="nonparen">mapc-generator #'<a href="https://www.cliki.net/site/HyperSpec/Body/fun_writecm_p_rintcm_princ.html" class="symbol">print</a> <span class="paren2">(<span class="nonparen">flatten '<span class="paren3">(<span class="nonparen"><span class="paren4">(<span class="nonparen">a <span class="paren5">(<span class="nonparen">b c</span>)</span> d</span>)</span> <span class="paren4">(<span class="nonparen">e</span>)</span> f <span class="paren4">(<span class="nonparen">g h</span>)</span></span>)</span></span>)</span></span>)</span>
|
|
<span class="comment">;; =>
|
|
</span>A
|
|
B
|
|
C
|
|
D
|
|
E
|
|
F
|
|
G
|
|
H
|
|
</span></div><p>Homepage: <a href="https://github.com/BnMcGn/snakes">GitHub</a><p>License: Apache 2.0<p>See Also: <a href="cl-itertools.html" class="internal">cl-itertools</a>, <a href="https://www.cliki.net/pygen" class="new">pygen</a><p>Topics: <a href="language extension.html" class="category">language extension</a></div></div>
|
|
<div id="footer" class="buttonbar"><ul><li><a href="snakes.html">Current version</a></li>
|
|
<li><a href="https://www.cliki.net/site/history?article=snakes">History</a></li>
|
|
<li><a href="https://www.cliki.net/site/backlinks?article=snakes">Backlinks</a></li><li><a href="https://www.cliki.net/site/edit-article?title=snakes&from-revision=3757919369">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> |