-
-
Notifications
You must be signed in to change notification settings - Fork 32
/
index.html
265 lines (265 loc) · 134 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
<!doctype html>
<html lang="en" dir="ltr" class="plugin-pages plugin-id-default" data-has-hydrated="false">
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.2.0">
<title data-rh="true">Powerful Scheme interpreter in JavaScript | LIPS Scheme</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://lips.js.org/img/lips-social-card.png"><meta data-rh="true" name="twitter:image" content="https://lips.js.org/img/lips-social-card.png"><meta data-rh="true" property="og:url" content="https://lips.js.org/"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docusaurus_tag" content="default"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docsearch:docusaurus_tag" content="default"><meta data-rh="true" property="og:title" content="Powerful Scheme interpreter in JavaScript | LIPS Scheme"><meta data-rh="true" name="description" content="Powerfull Scheme based Lisp in JavaScript"><meta data-rh="true" property="og:description" content="Powerfull Scheme based Lisp in JavaScript"><link data-rh="true" rel="icon" href="/img/favicon.ico"><link data-rh="true" rel="canonical" href="https://lips.js.org/"><link data-rh="true" rel="alternate" href="https://lips.js.org/" hreflang="en"><link data-rh="true" rel="alternate" href="https://lips.js.org/" hreflang="x-default"><link data-rh="true" rel="preconnect" href="https://HSV6UC2UY5-dsn.algolia.net" crossorigin="anonymous"><link data-rh="true" rel="preconnect" href="https://cdn.jsdelivr.net"><link data-rh="true" href="https://cdn.jsdelivr.net/combine/npm/jquery.terminal/css/jquery.terminal.min.css,npm/terminal-prism@0.4.1/css/prism-coy.css" rel="stylesheet"><link data-rh="true" href="https://cdn.jsdelivr.net/gh/jcubic/lips@devel/lib/css/terminal.css" rel="stylesheet"><script data-rh="true">function insertBanner(){var n=document.createElement("div");n.id="__docusaurus-base-url-issue-banner-container";n.innerHTML='\n<div id="__docusaurus-base-url-issue-banner" style="border: thick solid red; background-color: rgb(255, 230, 179); margin: 20px; padding: 20px; font-size: 20px;">\n <p style="font-weight: bold; font-size: 30px;">Your Docusaurus site did not load properly.</p>\n <p>A very common reason is a wrong site <a href="https://docusaurus.io/docs/docusaurus.config.js/#baseUrl" style="font-weight: bold;">baseUrl configuration</a>.</p>\n <p>Current configured baseUrl = <span style="font-weight: bold; color: red;">/</span> (default value)</p>\n <p>We suggest trying baseUrl = <span id="__docusaurus-base-url-issue-banner-suggestion-container" style="font-weight: bold; color: green;"></span></p>\n</div>\n',document.body.prepend(n);var e=document.getElementById("__docusaurus-base-url-issue-banner-suggestion-container"),s=window.location.pathname,o="/"===s.substr(-1)?s:s+"/";e.innerHTML=o}document.addEventListener("DOMContentLoaded",(function(){void 0===window.docusaurus&&insertBanner()}))</script><script data-rh="true" src="https://cdn.jsdelivr.net/npm/jquery"></script><script data-rh="true" src="https://cdn.jsdelivr.net/combine/npm/jquery.terminal/js/jquery.terminal.min.js,npm/js-polyfills/keyboard.js,npm/prismjs/prism.js,npm/jquery.terminal/js/prism.js,npm/prismjs/components/prism-scheme.min.js"></script><script data-rh="true" src="https://cdn.jsdelivr.net/gh/jcubic/lips@devel/lib/js/terminal.js"></script><script data-rh="true" src="https://cdn.jsdelivr.net/gh/jcubic/lips@devel/lib/js/prism.js"></script><script data-rh="true" src="https://cdn.jsdelivr.net/gh/jcubic/lips@devel/dist/lips.min.js" data-bootstrap="https://cdn.jsdelivr.net/gh/jcubic/lips@devel/dist/std.xcb"></script><link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="LIPS Scheme blog RSS Feed"><link rel="stylesheet" href="/assets/css/styles.abc77386.css">
<script src="/assets/js/runtime~main.3982bcb0.js" defer="defer"></script>
<script src="/assets/js/main.38b4014d.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" target="_self" href="/"><div class="navbar__logo"><img src="/img/logo-black.svg" alt="LIPS Scheme Logo" class="themedComponent_mlkZ themedComponent--light_NVdE"><img src="/img/logo-white.svg" alt="LIPS Scheme Logo" class="themedComponent_mlkZ themedComponent--dark_xIcU"></div><b class="navbar__title text--truncate">Scheme</b></a><a class="navbar__item navbar__link" href="/docs/intro">Documentation</a><a class="navbar__item navbar__link" href="/reference">Reference</a><a class="navbar__item navbar__link" href="/blog">Blog</a></div><div class="navbar__items navbar__items--right"><a href="https://twitter.com/LIPS_scheme" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Twitter/X<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a><a href="https://gitter.im/jcubic/lips" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Chat<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a><a href="https://github.com/LIPS-scheme/lips" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a><div class="toggle_vylO colorModeToggle_DEke"><button class="clean-btn toggleButton_gllP toggleButtonDisabled_aARS" type="button" disabled="" title="Switch between dark and light mode (currently light mode)" aria-label="Switch between dark and light mode (currently light mode)" aria-live="polite"><svg viewBox="0 0 24 24" width="24" height="24" class="lightToggleIcon_pyhR"><path fill="currentColor" d="M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"></path></svg><svg viewBox="0 0 24 24" width="24" height="24" class="darkToggleIcon_wfgR"><path fill="currentColor" d="M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"></path></svg></button></div><div class="navbarSearchContainer_Bca1"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><svg width="20" height="20" class="DocSearch-Search-Icon" viewBox="0 0 20 20" aria-hidden="true"><path d="M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"></path></svg><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"></span></button></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="main-wrapper mainWrapper_z2l0"><header class="hero hero--primary heroBanner_qdFl"><div class="container"><h1 class="hero__title">LIPS Scheme<!-- --> v. <span>1.0.0-beta.19</span></h1><p class="hero__subtitle">Powerfull Scheme based Lisp in JavaScript</p><p class="hidden_zUxV">Scheme Language Online REPL</p><div class="intro"><div class="actions-wrapper"><ul class="actions"><li class="zoom-in icon"><a href="#" title="Zoom In">Zoom In</a></li><li class="zoom-out icon"><a href="#" title="Zoom Out">Zoom Out</a></li><li class="full-screen"><ul><li class="full-screen icon"><a href="#" title="Full Screen">Full Screen</a></li><li class="exit-full-screen icon"><a href="#" title="Exit Full Screen">Exit Full Screen</a></li></ul></li></ul></div><div class="terminal marker"></div><div class="term" style="--size:1.0"><div class="loader-container"><div class="loader"><div>.</div><div>..</div><div>...</div><div>....</div><div>.....</div><div>......</div></div></div></div><div class="examples terminal-external"><div class="egg"><button>π</button></div><button class="run">run</button><ul class="list"><li class="active"><div class="example"><div><div><pre tabindex="0"><code><span class="token-line" style="color:#393A34"><span class="token comment">;; &() is object literal used with quasiquote</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation">(</span><span class="token keyword">let</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token function">obj</span><span class="token plain"> </span><span class="token name">`&</span><span class="token punctuation">(</span><span class="token variable">:name</span><span class="token plain"> </span><span class="token string">"LIPS Scheme"</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token variable">:version</span><span class="token plain"> </span><span class="token name">,lips.version</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token comment">;; you can access JavaScript properties</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token comment">;; with dot notation, print is display + newline</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">print</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token builtin">string-append</span><span class="token plain"> </span><span class="token name">obj.name</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token string">" "</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token name">obj.version</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token comment">;; you can mix scheme and JavaScript</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">setTimeout</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token keyword">lambda</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">alert</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">JSON.stringify</span><span class="token plain"> </span><span class="token name">obj</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token number">1000</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> #void</span><span class="token punctuation">)</span>
</span></code></pre><div class="buttonGroup_6DOT"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_FhaS" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_phi_"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_FfTR"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></div><div class="description"><p>With LIPS you can mix Scheme and JavaScript. You can access all JavaScript objects. You can also call any functions from Scheme.</p>
<p><strong>NOTE</strong>: you can hover over Scheme symbols and get tooltip with documentation.</p></div></li><li><div class="example"><div><div><pre tabindex="0"><code><span class="token-line" style="color:#393A34"><span class="token punctuation">(</span><span class="token function">print</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">filter</span><span class="token plain"> </span><span class="token name">number?</span><span class="token plain"> </span><span class="token punctuation">'</span><span class="token punctuation">(</span><span class="token name">foo</span><span class="token plain"> </span><span class="token number">10</span><span class="token plain"> </span><span class="token name">bar</span><span class="token plain"> </span><span class="token number">20</span><span class="token plain"> </span><span class="token name">baz</span><span class="token plain"> </span><span class="token number">30</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment">;; ==> (10 20 30)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation">(</span><span class="token function">print</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">filter</span><span class="token plain"> </span><span class="token regex">#/foo|bar/</span><span class="token plain"> </span><span class="token punctuation">'</span><span class="token punctuation">(</span><span class="token name">foo</span><span class="token plain"> </span><span class="token name">bar</span><span class="token plain"> </span><span class="token name">baz</span><span class="token plain"> </span><span class="token name">quux</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment">;; ==> (foo bar)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation">(</span><span class="token keyword">define</span><span class="token plain"> </span><span class="token name">foo_or_bar</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">curry</span><span class="token plain"> </span><span class="token name">filter</span><span class="token plain"> </span><span class="token regex">#/foo|bar/</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation">(</span><span class="token function">print</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">foo_or_bar</span><span class="token plain"> </span><span class="token punctuation">'</span><span class="token punctuation">(</span><span class="token name">foo</span><span class="token plain"> </span><span class="token name">bar</span><span class="token plain"> </span><span class="token name">baz</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment">;; ==> (foo bar)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment">;; &() is object literal used with quasiquote</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation">(</span><span class="token keyword">define</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">make-person</span><span class="token plain"> </span><span class="token name">first</span><span class="token plain"> </span><span class="token name">last</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token name">`&</span><span class="token punctuation">(</span><span class="token variable">:fist</span><span class="token plain"> </span><span class="token name">,first</span><span class="token plain"> </span><span class="token variable">:last</span><span class="token plain"> </span><span class="token name">,last</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation">(</span><span class="token keyword">define</span><span class="token plain"> </span><span class="token name">beatles</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token builtin">map</span><span class="token plain"> </span><span class="token name">make-person</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation">'</span><span class="token punctuation">(</span><span class="token string">"John"</span><span class="token plain"> </span><span class="token string">"Paul"</span><span class="token plain"> </span><span class="token string">"Ringo"</span><span class="token plain"> </span><span class="token string">"George"</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation">'</span><span class="token punctuation">(</span><span class="token string">"Lennon"</span><span class="token plain"> </span><span class="token string">"McCartney"</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token string">"Starr"</span><span class="token plain"> </span><span class="token string">"Harrison"</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment">;; pluck will extract properties from objects</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation">(</span><span class="token function">write</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token builtin">map</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">pluck</span><span class="token plain"> </span><span class="token string">"fist"</span><span class="token punctuation">)</span><span class="token plain"> </span><span class="token name">beatles</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation">(</span><span class="token builtin">newline</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment">;; ==> ("John" "Paul" "Ringo" "George")</span>
</span></code></pre><div class="buttonGroup_6DOT"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_FhaS" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_phi_"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_FfTR"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></div><div class="description"><p>Filter function accepts: regex or function. Curry is higher order function that creates a new function with default arguments. Pluck returns a function that extract fields from an object.</p></div></li><li><div class="example"><div><div><pre tabindex="0"><code><span class="token-line" style="color:#393A34"><span class="token comment">;; JavaScript regular expression literal</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation">(</span><span class="token keyword">define</span><span class="token plain"> </span><span class="token name">re</span><span class="token plain"> </span><span class="token regex">#/<h1>([^>]+)<\/h1>/</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment">;; --> is a macro that allow chaining</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment">;; of JavaScript methods calls</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment">;; no need to use Promises because of automagic</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment">;; promise resolving</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation">(</span><span class="token keyword">let</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token function">msg</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">--></span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">fetch</span><span class="token plain"> </span><span class="token string">"https://scheme.org.pl/test/"</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">text</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">match</span><span class="token plain"> </span><span class="token name">re</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">print</span><span class="token plain"> </span><span class="token name">msg</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment">;; explicit promise handling with quotation</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation">(</span><span class="token keyword">let</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token function">promise</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">--></span><span class="token plain"> </span><span class="token symbol">'></span><span class="token punctuation">(</span><span class="token function">fetch</span><span class="token plain"> </span><span class="token string">"https://scheme.org.pl/test/"</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">then</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token keyword">lambda</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token lambda-parameter">res</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">res.text</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">then</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token keyword">lambda</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token lambda-parameter">x</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">.</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">x.match</span><span class="token plain"> </span><span class="token name">re</span><span class="token punctuation">)</span><span class="token plain"> </span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">print</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">await</span><span class="token plain"> </span><span class="token name">promise</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
</span></code></pre><div class="buttonGroup_6DOT"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_FhaS" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_phi_"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_FfTR"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></div><div class="description"><p>LIPS do automagic async/await. It resolve all promises by default, but you can quote a promise and handle it like in JavaScript.</p></div></li><li><div class="example"><div><div><pre tabindex="0"><code><span class="token-line" style="color:#393A34"><span class="token comment">;; show hygienic macro prints expression</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment">;; and the result value</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation">(</span><span class="token keyword">define-syntax</span><span class="token plain"> </span><span class="token name">show</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation">(</span><span class="token keyword">syntax-rules</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation">[</span><span class="token punctuation">(</span><span class="token function">_</span><span class="token plain"> </span><span class="token name">expr</span><span class="token plain"> </span><span class="token name">...</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation">(</span><span class="token keyword">begin</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation">(</span><span class="token keyword">begin</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">write</span><span class="token plain"> </span><span class="token symbol">'expr</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">display</span><span class="token plain"> </span><span class="token string">" = "</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">write</span><span class="token plain"> </span><span class="token name">expr</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation">(</span><span class="token builtin">newline</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token name">...</span><span class="token punctuation">)</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment">;; few example of Numeric Tower</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation">(</span><span class="token function">show</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token operator">/</span><span class="token plain"> </span><span class="token number">1</span><span class="token plain"> </span><span class="token number">2</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation">(</span><span class="token builtin">expt</span><span class="token plain"> </span><span class="token number">1/4</span><span class="token plain"> </span><span class="token number">1/2</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation">(</span><span class="token builtin">expt</span><span class="token plain"> </span><span class="token number">10+10i</span><span class="token plain"> </span><span class="token number">1/2</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">log</span><span class="token plain"> </span><span class="token number">2+1/2i</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">acos</span><span class="token plain"> </span><span class="token number">-1</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation">(</span><span class="token operator">+</span><span class="token plain"> </span><span class="token number">1/2</span><span class="token plain"> </span><span class="token number">1/4</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation">(</span><span class="token operator">*</span><span class="token plain"> </span><span class="token number">3/4</span><span class="token plain"> </span><span class="token number">1/10</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
</span></code></pre><div class="buttonGroup_6DOT"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_FhaS" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_phi_"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_FfTR"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></div><div class="description"><p>You can use hygienic syntax-rules macro, here are also a few examples of Numeric Tower.</p></div></li><li><div class="example"><div><div><pre tabindex="0"><code><span class="token-line" style="color:#393A34"><span class="token punctuation">(</span><span class="token keyword">define-macro</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">λ</span><span class="token plain"> . </span><span class="token name">body</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> `</span><span class="token punctuation">(</span><span class="token name">lambda</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">$1</span><span class="token plain"> </span><span class="token name">$2</span><span class="token plain"> </span><span class="token name">$3</span><span class="token plain"> </span><span class="token name">$4</span><span class="token plain"> </span><span class="token name">$5</span><span class="token plain"> </span><span class="token name">$6</span><span class="token plain"> </span><span class="token name">$7</span><span class="token plain"> </span><span class="token name">$8</span><span class="token plain"> </span><span class="token name">$8</span><span class="token plain"> </span><span class="token name">$9</span><span class="token punctuation">)</span><span class="token plain"> </span><span class="token name">,@body</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation">(</span><span class="token function">print</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token builtin">map</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">λ</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token operator">+</span><span class="token plain"> </span><span class="token name">$1</span><span class="token plain"> </span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">range</span><span class="token plain"> </span><span class="token number">10</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment">;; ==> (1 2 3 4 5 6 7 8 9 10)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation">(</span><span class="token keyword">let</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token function">x</span><span class="token plain"> </span><span class="token number">10</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">print</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token builtin">map</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">λ</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token operator">+</span><span class="token plain"> </span><span class="token name">$1</span><span class="token plain"> </span><span class="token name">$2</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">range</span><span class="token plain"> x</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation">(</span><span class="token builtin">cdr</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">range</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token operator">+</span><span class="token plain"> x </span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment">;; ==> (1 3 5 7 9 11 13 15 17 19)</span>
</span></code></pre><div class="buttonGroup_6DOT"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_FhaS" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_phi_"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_FfTR"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></div><div class="description"><p>LIPS also supports classic lisp macros. Here is example of anaphoric macro (a lambda shortcut)</p></div></li><li><div class="example"><div><div><pre tabindex="0"><code><span class="token-line" style="color:#393A34"><span class="token comment">;; Create new class using define-class macro</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation">(</span><span class="token function">define-class</span><span class="token plain"> </span><span class="token name">Person</span><span class="token plain"> </span><span class="token name">Object</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">constructor</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token keyword">lambda</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token lambda-parameter">self name</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation">(</span><span class="token keyword">set!</span><span class="token plain"> </span><span class="token name">self.name</span><span class="token plain"> </span><span class="token name">name</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment">;; add syntax extension</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation">(</span><span class="token function">set-special!</span><span class="token plain"> </span><span class="token string">"P:"</span><span class="token plain"> </span><span class="token symbol">'make-person</span><span class="token plain"> </span><span class="token name">lips.specials.SPLICE</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment">;; add class representation</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation">(</span><span class="token function">set-repr!</span><span class="token plain"> </span><span class="token name">Person</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation">(</span><span class="token keyword">lambda</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token lambda-parameter">x q</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation">(</span><span class="token builtin">string-append</span><span class="token plain"> </span><span class="token string">"P:("</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">repr</span><span class="token plain"> </span><span class="token name">x.name</span><span class="token plain"> q</span><span class="token punctuation">)</span><span class="token plain"> </span><span class="token string">")"</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment">;; function that create new object</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment">;; for the syntax extension</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation">(</span><span class="token keyword">define</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">make-person</span><span class="token plain"> </span><span class="token name">name</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">new</span><span class="token plain"> </span><span class="token name">Person</span><span class="token plain"> </span><span class="token name">name</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment">;; we can use new syntax</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation">(</span><span class="token function">write</span><span class="token plain"> P</span><span class="token variable">:("jon"))</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation">(</span><span class="token builtin">newline</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment">;; ==> P:("jon")</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation">(</span><span class="token function">print</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">.</span><span class="token plain"> P</span><span class="token variable">:("jon")</span><span class="token plain"> </span><span class="token symbol">'name</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment">;; ==> "jon"</span>
</span></code></pre><div class="buttonGroup_6DOT"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_FhaS" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_phi_"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_FfTR"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></div><div class="description"><p>Syntax extensions and custom repr allow to create new homoiconic data types.</p></div></li><li><div class="example"><div><div><pre tabindex="0"><code><span class="token-line" style="color:#393A34"><span class="token comment">;; this will query the DOM and invoke click method</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation">(</span><span class="token keyword">let</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token function">selector</span><span class="token plain"> </span><span class="token string">"[class*=\"colorModeToggle\"] button"</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">--></span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">document.querySelector</span><span class="token plain"> </span><span class="token name">selector</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">click</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment">;; accessing jQuery Terminal, ignore works like begin</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment">;; but the return value is ignored so the terminal</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment">;; is not paused when it find a Promise from</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment">;; Terminal typing animation</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation">(</span><span class="token function">ignore</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">term.css</span><span class="token plain"> </span><span class="token string">"--background"</span><span class="token plain"> </span><span class="token string">"#2E2E2E"</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">term.echo</span><span class="token plain"> </span><span class="token string">"This is LIPS Scheme"</span><span class="token plain"> &</span><span class="token punctuation">(</span><span class="token variable">:typing</span><span class="token plain"> </span><span class="token boolean">#t</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
</span></code></pre><div class="buttonGroup_6DOT"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_FhaS" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_phi_"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_FfTR"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></div><div class="description"><p>With LIPS you can interact with JavaScript DOM and jQuery Terminal (REPL).</p></div></li><li><div class="example"><div><div><pre tabindex="0"><code><span class="token-line" style="color:#393A34"><span class="token comment">;; define new dynamic parameter</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation">(</span><span class="token keyword">define</span><span class="token plain"> x </span><span class="token punctuation">(</span><span class="token builtin">make-parameter</span><span class="token plain"> </span><span class="token number">10</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation">(</span><span class="token keyword">define</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">double-x</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation">(</span><span class="token operator">*</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">x</span><span class="token punctuation">)</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">x</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment">;; use default value</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation">(</span><span class="token function">print</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">double-x</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment">;; ==> 100</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment">;; change the value dynamically</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation">(</span><span class="token keyword">parameterize</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token function">x</span><span class="token plain"> </span><span class="token number">20</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">print</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">double-x</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment">;; ==> 400</span>
</span></code></pre><div class="buttonGroup_6DOT"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_FhaS" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_phi_"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_FfTR"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></div><div class="description"><p>Dynamic variables with R7RS parameterize</p></div></li><li><div class="example"><div><div><pre tabindex="0"><code><span class="token-line" style="color:#393A34"><span class="token comment">;; macro that swap first two variables</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment">;; with the last two expressions</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation">(</span><span class="token keyword">define-macro</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">swap!</span><span class="token plain"> a b x y</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation">(</span><span class="token keyword">let</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token function">g_b</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">gensym</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> `</span><span class="token punctuation">(</span><span class="token name">let</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token function">,g_b</span><span class="token plain"> </span><span class="token name">,y</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation">(</span><span class="token keyword">set!</span><span class="token plain"> </span><span class="token name">,a</span><span class="token plain"> </span><span class="token name">,b</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation">(</span><span class="token keyword">set!</span><span class="token plain"> </span><span class="token name">,b</span><span class="token plain"> </span><span class="token name">,g_b</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment">;; example taken from Go website</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment">;; fib creates a function</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment">;; that return fibonacci numbers</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation">(</span><span class="token keyword">define</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">fib</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation">(</span><span class="token keyword">let</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token function">a</span><span class="token plain"> </span><span class="token number">0</span><span class="token punctuation">)</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">b</span><span class="token plain"> </span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation">(</span><span class="token keyword">lambda</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">swap!</span><span class="token plain"> a b b </span><span class="token punctuation">(</span><span class="token operator">+</span><span class="token plain"> a b</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> a</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation">(</span><span class="token keyword">let</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token function">f</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">fib</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation">(</span><span class="token builtin">list</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">f</span><span class="token punctuation">)</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">f</span><span class="token punctuation">)</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">f</span><span class="token punctuation">)</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">f</span><span class="token punctuation">)</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">f</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
</span></code></pre><div class="buttonGroup_6DOT"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_FhaS" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_phi_"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_FfTR"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></div><div class="description"><p>Here is a fibonacci Closure with swap! lisp style macro.</p></div></li><li><div class="example"><div><div><pre tabindex="0"><code><span class="token-line" style="color:#393A34"><span class="token comment">;; recursive hygienic syntax-rules macro</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation">(</span><span class="token keyword">define-syntax</span><span class="token plain"> </span><span class="token name">alist</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation">(</span><span class="token keyword">syntax-rules</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token function">_</span><span class="token punctuation">)</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token function">_</span><span class="token plain"> x y z </span><span class="token name">...</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation">(</span><span class="token builtin">cons</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token builtin">cons</span><span class="token plain"> x y</span><span class="token punctuation">)</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">alist</span><span class="token plain"> z </span><span class="token name">...</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation">(</span><span class="token function">print</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">alist</span><span class="token plain"> </span><span class="token string">"foo"</span><span class="token plain"> </span><span class="token number">10</span><span class="token plain"> </span><span class="token string">"bar"</span><span class="token plain"> </span><span class="token number">20</span><span class="token plain"> </span><span class="token string">"baz"</span><span class="token plain"> </span><span class="token number">30</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment">;; ==> ((foo . 10) (bar . 20) (baz . 30))</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation">(</span><span class="token function">macroexpand</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">alist</span><span class="token plain"> </span><span class="token string">"foo"</span><span class="token plain"> </span><span class="token number">10</span><span class="token plain"> </span><span class="token string">"bar"</span><span class="token plain"> </span><span class="token number">20</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment">;; ==> (#:cons (#:cons "foo" 10)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment">;; (#:cons (#:cons "bar" 20)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment">;; ()))</span>
</span></code></pre><div class="buttonGroup_6DOT"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_FhaS" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_phi_"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_FfTR"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></div><div class="description"><p>Scheme hygienic macro that creates an assoc list, with macroexpand.</p></div></li><li><div class="example"><div><div><pre tabindex="0"><code><span class="token-line" style="color:#393A34"><span class="token punctuation">(</span><span class="token keyword">define</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">repeater</span><span class="token plain"> x</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token string">"(repeater value)</span>
</span><span class="token-line" style="color:#393A34"><span class="token string"></span>
</span><span class="token-line" style="color:#393A34"><span class="token string"> Function prints the value 1 time and modifies itself</span>
</span><span class="token-line" style="color:#393A34"><span class="token string"> to repeat (+ n 1) times on the next call."</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation">(</span><span class="token builtin">for-each</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token keyword">lambda</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">print</span><span class="token plain"> x</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">range</span><span class="token plain"> </span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation">(</span><span class="token keyword">let</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token function">r</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token builtin">cadr</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">cdadddr</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">.</span><span class="token plain"> </span><span class="token name">repeater</span><span class="token plain"> </span><span class="token symbol">'__code__</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation">(</span><span class="token builtin">set-cdr!</span><span class="token plain"> r </span><span class="token punctuation">(</span><span class="token builtin">list</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token operator">+</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token builtin">cadr</span><span class="token plain"> r</span><span class="token punctuation">)</span><span class="token plain"> </span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation">(</span><span class="token function">print</span><span class="token plain"> </span><span class="token string">"1"</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation">(</span><span class="token function">repeater</span><span class="token plain"> </span><span class="token symbol">'hello</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation">(</span><span class="token function">print</span><span class="token plain"> </span><span class="token string">"2"</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation">(</span><span class="token function">repeater</span><span class="token plain"> </span><span class="token symbol">'hello</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation">(</span><span class="token function">print</span><span class="token plain"> </span><span class="token string">"3"</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation">(</span><span class="token function">repeater</span><span class="token plain"> </span><span class="token symbol">'hello</span><span class="token punctuation">)</span>
</span></code></pre><div class="buttonGroup_6DOT"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_FhaS" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_phi_"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_FfTR"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></div><div class="description"><p>Function that modify its source code when run</p></div></li><li><div class="example"><div><div><pre tabindex="0"><code><span class="token-line" style="color:#393A34"><span class="token comment">;; define new syntax parameter</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation">(</span><span class="token function">define-syntax-parameter</span><span class="token plain"> </span><span class="token name">it</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation">(</span><span class="token keyword">syntax-rules</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token function">_</span><span class="token plain"> . _</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation">(</span><span class="token builtin">syntax-error</span><span class="token plain"> </span><span class="token string">"abort used outside of a loop"</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment">;; syntax-rules macro aif adds (it) parameter</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment">;; to access tested value.</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation">(</span><span class="token keyword">define-syntax</span><span class="token plain"> </span><span class="token name">aif</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation">(</span><span class="token keyword">syntax-rules</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token function">_</span><span class="token plain"> </span><span class="token name">cond</span><span class="token plain"> </span><span class="token name">rest</span><span class="token plain"> </span><span class="token name">...</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation">(</span><span class="token keyword">let</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token function">test</span><span class="token plain"> </span><span class="token name">cond</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">syntax-parameterize</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token function">it</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token keyword">syntax-rules</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token function">_</span><span class="token punctuation">)</span><span class="token plain"> </span><span class="token name">test</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation">(</span><span class="token keyword">if</span><span class="token plain"> </span><span class="token name">test</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token name">rest</span><span class="token plain"> </span><span class="token name">...</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment">;; no need to use assoc two times</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment">;; or using a variable to hold the value</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation">(</span><span class="token keyword">let</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token function">alist</span><span class="token plain"> </span><span class="token punctuation">'</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token function">a</span><span class="token plain"> . </span><span class="token number">10</span><span class="token punctuation">)</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">b</span><span class="token plain"> . </span><span class="token number">20</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">aif</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token builtin">assoc</span><span class="token plain"> </span><span class="token symbol">'a</span><span class="token plain"> </span><span class="token name">alist</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">print</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token builtin">cdr</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">it</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
</span></code></pre><div class="buttonGroup_6DOT"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_FhaS" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_phi_"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_FfTR"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></div><div class="description"><p>Built in SRFI-139 syntax-parameterize allows creating anamorphic hygienic macros.</p></div></li><li><div class="example"><div><div><pre tabindex="0"><code><span class="token-line" style="color:#393A34"><span class="token comment">;; JavaScript generator created using JS eval</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation">(</span><span class="token keyword">define</span><span class="token plain"> </span><span class="token name">gen</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">self.eval</span><span class="token plain"> </span><span class="token string">"</span>
</span><span class="token-line" style="color:#393A34"><span class="token string"> (async function* gen(time, ...args) {</span>
</span><span class="token-line" style="color:#393A34"><span class="token string"> function delay(time) {</span>
</span><span class="token-line" style="color:#393A34"><span class="token string"> return new Promise((resolve) => {</span>
</span><span class="token-line" style="color:#393A34"><span class="token string"> setTimeout(resolve, time);</span>
</span><span class="token-line" style="color:#393A34"><span class="token string"> });</span>
</span><span class="token-line" style="color:#393A34"><span class="token string"> }</span>
</span><span class="token-line" style="color:#393A34"><span class="token string"> for (let x of args) {</span>
</span><span class="token-line" style="color:#393A34"><span class="token string"> await delay(time);</span>
</span><span class="token-line" style="color:#393A34"><span class="token string"> yield x;</span>
</span><span class="token-line" style="color:#393A34"><span class="token string"> }</span>
</span><span class="token-line" style="color:#393A34"><span class="token string"> })"</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment">;; iteration over iterator/generator</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation">(</span><span class="token function">do-iterator</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">i</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token builtin">apply</span><span class="token plain"> </span><span class="token name">gen</span><span class="token plain"> </span><span class="token number">100</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">range</span><span class="token plain"> </span><span class="token number">10</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">print</span><span class="token plain"> i</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation">(</span><span class="token function">print</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">iterator->array</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">gen</span><span class="token plain"> </span><span class="token number">100</span><span class="token plain"> </span><span class="token number">1</span><span class="token plain"> </span><span class="token number">2</span><span class="token plain"> </span><span class="token number">3</span><span class="token plain"> </span><span class="token number">4</span><span class="token plain"> </span><span class="token number">5</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment">;; strings and lists are JavaScript iterators</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation">(</span><span class="token function">write</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">iterator->array</span><span class="token plain"> </span><span class="token string">"hello"</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation">(</span><span class="token builtin">newline</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation">(</span><span class="token function">print</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">iterator->array</span><span class="token plain"> </span><span class="token punctuation">'</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token plain"> </span><span class="token number">2</span><span class="token plain"> </span><span class="token number">3</span><span class="token plain"> </span><span class="token number">4</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
</span></code></pre><div class="buttonGroup_6DOT"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_FhaS" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_phi_"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_FfTR"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></div><div class="description"><p>You can iterate over JavaScript generators (objects that implement iterator protocol)</p></div></li><li><div class="example"><div><div><pre tabindex="0"><code><span class="token-line" style="color:#393A34"><span class="token punctuation">(</span><span class="token keyword">define</span><span class="token plain"> Y</span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation">(</span><span class="token keyword">lambda</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token lambda-parameter">h</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token keyword">lambda</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token lambda-parameter">x</span><span class="token punctuation">)</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">x</span><span class="token plain"> x</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation">(</span><span class="token keyword">lambda</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token lambda-parameter">g</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">h</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token keyword">lambda</span><span class="token plain"> </span><span class="token lambda-parameter">args</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token builtin">apply</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">g</span><span class="token plain"> g</span><span class="token punctuation">)</span><span class="token plain"> </span><span class="token name">args</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token function">Y</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token keyword">lambda</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token lambda-parameter">f</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation">(</span><span class="token keyword">lambda</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token lambda-parameter">n</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation">(</span><span class="token keyword">cond</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token operator"><</span><span class="token plain"> n </span><span class="token number">0</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation">(</span><span class="token keyword">throw</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">new</span><span class="token plain"> </span><span class="token name">Error</span><span class="token plain"> </span><span class="token string">"Invalid factorial"</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token builtin">zero?</span><span class="token plain"> n</span><span class="token punctuation">)</span><span class="token plain"> </span><span class="token number">1</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation">(</span><span class="token keyword">else</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token operator">*</span><span class="token plain"> n </span><span class="token punctuation">(</span><span class="token function">f</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token operator">-</span><span class="token plain"> n </span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token number">10</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment">;; ==> 3628800</span>
</span></code></pre><div class="buttonGroup_6DOT"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_FhaS" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_phi_"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_FfTR"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></div><div class="description"><p>Example of Y Combinator and inline factorial function.</p></div></li><li class="hidden"><div class="example"><div><div><pre tabindex="0"><code><span class="token-line" style="color:#393A34"><span class="token punctuation">(</span><span class="token keyword">define-macro</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">%promisify</span><span class="token plain"> </span><span class="token name">expr</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation">(</span><span class="token keyword">let</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token function">resolve</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">gensym</span><span class="token plain"> </span><span class="token string">"resolve"</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> `</span><span class="token punctuation">(</span><span class="token name">new</span><span class="token plain"> </span><span class="token name">Promise</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation">(</span><span class="token keyword">lambda</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token lambda-parameter">,resolve</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> ,</span><span class="token punctuation">(</span><span class="token builtin">append</span><span class="token plain"> </span><span class="token name">expr</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token builtin">list</span><span class="token plain"> </span><span class="token name">resolve</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation">(</span><span class="token keyword">if</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token builtin">null?</span><span class="token plain"> </span><span class="token name">self.$.terminal.from_ansi</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">%promisify</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">$.getScript</span><span class="token plain"> </span><span class="token string">"https://cdn.jsdelivr.net/npm/jquery.terminal/js/unix_formatting.js"</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation">(</span><span class="token keyword">if</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token builtin">null?</span><span class="token plain"> </span><span class="token name">self.qrcode</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">%promisify</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">$.getScript</span><span class="token plain"> </span><span class="token string">"https://cdn.jsdelivr.net/gh/jcubic/static/js/qrcode.js"</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation">(</span><span class="token keyword">let</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token function">code</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">%promisify</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">qrcode.generate</span><span class="token plain"> </span><span class="token string">"https://tinyurl.com/fxv87gb"</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">term.echo</span><span class="token plain"> </span><span class="token punctuation">(</span><span class="token function">code.replace</span><span class="token plain"> </span><span class="token regex">#/\[47m/g</span><span class="token plain"> </span><span class="token string">"[30;47m"</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token plain"></span>
</span><span class="token-line" style="color:#393A34"><span class="token plain"> #void</span><span class="token punctuation">)</span>
</span></code></pre><div class="buttonGroup_6DOT"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_FhaS" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_phi_"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_FfTR"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></div><div class="description"></div></li></ul><ul class="pagination"><li class="active"><a href="#">1</a></li><li><a href="#">2</a></li><li><a href="#">3</a></li><li><a href="#">4</a></li><li><a href="#">5</a></li><li><a href="#">6</a></li><li><a href="#">7</a></li><li><a href="#">8</a></li><li><a href="#">9</a></li><li><a href="#">10</a></li><li><a href="#">11</a></li><li><a href="#">12</a></li><li><a href="#">13</a></li><li><a href="#">14</a></li><li class="hidden"><a href="#">15</a></li></ul></div></div></div></header><main><div class="section_nB9V"><h2 class="anchor anchorWithStickyNavbar_LWe7 header_bEBW" id="summary">Summary<a href="#summary" class="hash-link" aria-label="Direct link to Summary" title="Direct link to Summary"></a></h2><p>LIPS Scheme is powerful lisp interpreter written in JavaScript. The aim of the project is to fully support <a href="https://standards.scheme.org/#r7rs">R7RS</a> specification of Scheme Programming Language. But add more powerful features on top.</p><p>The name LIPS is recursive acronym which stands for <strong>LIPS Is Pretty Simple</strong>. Over time the project may no longer be that simple in implementation but it always be LIPS.</p><h2 class="anchor anchorWithStickyNavbar_LWe7 header_bEBW" id="features">Features<a href="#features" class="hash-link" aria-label="Direct link to Features" title="Direct link to Features"></a></h2><p>Most important features of LIPS:</p><ul><li>Great integration with JavaScript. You can use any JS library out of the box.</li><li>Asynchronous execution (auto resolving of promises with optional promise quotation).</li><li>Literal regular expression.</li><li>Functional helpers (inspired by <a href="https://ramdajs.com/">RamdaJS</a> and <a href="https://lodash.com/">Lodash</a>).</li><li>Possibility modify the parser at runtime (add new syntax, similar to vectors and object).</li><li>Possibility to set representation of new data types for write and display. With parser extensions you can make new data types have different syntax and still be homoicoic.</li><li>Small JavaScript core with Standard Library implemented in basic Scheme.</li><li>Full support of Unicode and Emoji.</li><li>Support for <a href="https://en.wikipedia.org/wiki/SXML">SXML</a>, that allow to write <a href="https://en.wikipedia.org/wiki/JSX_(JavaScript)">JSX</a> e.g. with <a href="https://preactjs.com/">Preact</a> or <a href="https://react.dev/">React</a> apps.</li><li>I/O Ports supports in browser with <a href="https://github.com/jvilk/BrowserFS">BrowserFS</a>.</li><li>Full numerical tower and Big Integer support (still <a href="https://github.com/jcubic/lips/issues/34">not 100% fully unit tested</a>).</li><li>Powerful introspection (similar to the one in Python).</li><li>Auto formatting of lisp code (pretty print).</li><li>Lisp/hygienic macros and macroexpand.</li><li>Builtin help system.</li></ul></div><div class="tools_w5Qr"><h2 class="anchor anchorWithStickyNavbar_LWe7 header_ZcHJ" id="tools">Tools<a href="#tools" class="hash-link" aria-label="Direct link to Tools" title="Direct link to Tools"></a></h2><section id="bookmark"><div class="container"><svg width="800" height="800" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg" class="svg_V48x" role="img"><path d="m128.81 49.28 27.407 228.157.06.563v216.906l19.94-39.28 20.468 38.155V296.814L168.563 57.5l-39.75-8.22Z" style="fill:#ad0000;fill-opacity:1"></path><g style="fill:teal;stroke:none;stroke-width:6.4;stroke-dasharray:none"><path d="M215.374 313.938v31.813l27.564 10.53c-7.04-20.847-16.565-33.66-27.438-42.25-.04-.03-.084-.06-.125-.092z" style="fill:teal;stroke:none;stroke-width:6.4;stroke-dasharray:none"></path><path d="M473.094 74.406v226.75l-216.938 79.69-40.78-14.97v38.28c23.21 8.03 58.078 6.813 86.25-2.53v-17.563l184.03-67.625 6.125-2.25V74.407h-18.686zM20.5 74.376v239.813l6.125 2.25 110.97 40.78v-19.906l-98.407-36.156V74.376ZM189.28 73.53l25.593 217.782a88.58 88.58 0 0 1 12.188 8.063c6.452 5.097 12.412 11.36 17.75 18.97V109.5c-15.496-17.475-34.402-28.327-55.532-35.97Z" style="fill:teal;stroke:none;stroke-width:6.4;stroke-dasharray:none"></path><path d="M454.719 43.03c-65.178 17.392-138.354.102-191.22 70.814v208.812c19.795-29.15 45.443-40.866 70.72-46.53 33.914-7.603 66.18-7.163 91.5-27.626l11.75 14.53c-31.256 25.263-68.25 24.386-99.158 31.314-29.295 6.566-53.978 17.63-72.25 63.187l188.657-71.967V43.03ZM57.594 43v242.563l80 30.53V292c-22.504-3.217-45.065-8.633-62.53-26.844l13.5-12.937c12.15 12.667 29.032 17.263 48.28 20.374L110.656 55.03C93.3 51.725 75.492 48.1 57.594 43Z" style="fill:teal;stroke:none;stroke-width:6.4;stroke-dasharray:none"></path></g></svg><h3>Bookmarklet</h3><p>When you're learning Scheme language, you can run the REPL directly on any page that have Scheme tutorial you're learning from. It even work with PDF files and new empty tab (at least in Chrome). Drag this link <a id="bookmark_link">LIPS REPL</a> to your bookmarks. When you click on the bookmark it will run the interpreter. You can also just click the link.</p> <p>The bookmark can also be used to add REPL to your LIPS Web application.</p> <p>It may not work on sites that are protected with<!-- --> <a href="https://en.wikipedia.org/wiki/Content_Security_Policy">Content Security Policy</a>. CSP was created mostly as a security solution to prevent<!-- --> <abbr title="Cross-site scripting">XSS</abbr> vunerablities. You can disable this mechanism with <a href="http://tinyurl.com/CSP-disable">Chrome Extension</a>, but you do this on your own risk.</p></div></section><section id="bookmarklet"><div class="container"><svg width="800" height="800" viewBox="0 0 512 512" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" class="svg_V48x" role="img"><path style="font-weight:700;font-size:153.432px;line-height:1.25;font-family:Monospace;-inkscape-font-specification:'Monospace Bold';letter-spacing:0;word-spacing:0;fill:teal;fill-opacity:1;stroke-width:5.04996" d="M260.887 104.259q9.757 12.301 14.847 27.997 5.09 15.554 5.09 33.653 0 18.24-5.231 34.218-5.09 15.978-14.706 28.421h-16.826q9.473-13.432 14.14-29.27 4.807-15.977 4.807-33.228 0-16.826-4.807-32.522-4.808-15.695-13.999-29.27z" transform="translate(3.07 6.275)"></path><path style="font-weight:700;font-size:153.432px;line-height:1.25;font-family:Monospace;-inkscape-font-specification:'Monospace Bold';letter-spacing:0;word-spacing:0;fill:#ad0000;fill-opacity:1;stroke-width:5.04996" d="M208.145 223.206q-5.373 0-9.05-1.98-3.534-2.12-5.797-5.514-2.12-3.535-3.393-7.777l-5.939-19.796q-.848-2.828-1.697-5.797-.848-3.11-1.555-5.939-.566-2.97-.849-5.09h-.424q-.99 4.1-2.545 8.908-1.555 4.666-2.545 7.494l-12.16 34.077h-20.928L171.1 148.69l-2.545-6.787q-2.687-7.494-6.08-9.474-3.394-1.98-8.485-1.98-2.686 0-4.524.283-1.839.283-3.253.566v-16.685q1.98-.424 5.232-.707 3.394-.424 6.505-.424 8.484 0 14.14 2.828 5.655 2.828 9.332 8.342 3.676 5.373 6.08 13.433l17.11 56.277q1.696 5.515 3.534 8.484 1.838 2.828 3.677 3.818 1.98.99 3.959.99 1.131 0 2.262-.142 1.273-.283 2.404-.566v14.14q-1.131.566-3.252.99-2.121.566-4.525.849-2.404.282-4.525.282z" transform="translate(3.07 6.275)"></path><path style="font-weight:700;font-size:153.432px;line-height:1.25;font-family:Monospace;-inkscape-font-specification:'Monospace Bold';letter-spacing:0;word-spacing:0;fill:teal;fill-opacity:1;stroke-width:5.04996" d="M99.975 228.548q-9.757-12.301-14.847-27.997-5.09-15.695-5.09-33.653 0-18.24 5.09-34.218 5.232-15.978 14.847-28.421H116.8q-9.473 13.432-14.281 29.41-4.666 15.837-4.666 33.088 0 16.827 4.807 32.522 4.95 15.695 13.999 29.27z" transform="translate(3.07 6.275)"></path><path d="M55.284 33.203c-18.047 0-32.677 14.63-32.677 32.677v367.69c0 18.046 14.63 32.676 32.677 32.676h395.292c18.047 0 32.677-14.63 32.677-32.677V65.88c0-18.047-14.63-32.677-32.677-32.677zm0 32.677h395.292v367.69H55.284Z" style="fill:teal;fill-opacity:1;stroke-width:16.3384" transform="translate(3.07 6.275)"></path><path d="M332.764-496.607c-15.35 0-28.302 6.524-38.734 16.804a75.53 75.53 0 0 0-4.237 4.528h-12.495c-28.619 0-51.2 24.195-51.2 53.334v85.334c0 29.139 22.581 53.332 51.2 53.332h153.6c28.618 0 51.2-24.193 51.2-53.332v-85.334c0-29.139-22.582-53.334-51.2-53.334h-12.495a75.55 75.55 0 0 0-4.238-4.528c-10.432-10.28-23.384-16.804-38.734-16.804zm0 42.666h42.667c2.76 0 5.69 1.476 8.789 4.53 2.296 2.262 3.883 4.558 4.36 5.458l6.011 11.346h36.307c4.37 0 8.533 4.459 8.533 10.666v85.334c0 6.207-4.162 10.666-8.533 10.666h-153.6c-4.372 0-8.534-4.459-8.534-10.666v-85.334c0-6.207 4.162-10.666 8.534-10.666h36.306l6.011-11.346c.477-.9 2.064-3.196 4.36-5.458 3.1-3.054 6.028-4.53 8.789-4.53z" style="fill:teal;fill-opacity:1;stroke-width:21.3333" transform="matrix(.76586 0 0 .76586 60.6 635.326)"></path><path d="M354.098-343.647c-23.565 0-42.667-19.103-42.667-42.667s19.102-42.666 42.667-42.666c23.564 0 42.666 19.102 42.666 42.666 0 23.564-19.102 42.667-42.666 42.667z" style="fill:#ad0000;fill-opacity:1;stroke-width:21.3333" transform="matrix(.76586 0 0 .76586 60.6 635.326)"></path></svg><h3><a href="/screenshooter">Screenshooter</a></h3><p>This tool allow you to create nice screenshot of code. The screenshot tool is aware of any syntax added on top of Scheme. The tool is created using Codemirror and custom style build on top of Scheme syntax.</p><p>You can use this tool to generate snippets of Scheme or LIPS Code and share it on social media.</p></div></section></div><div class="section_nB9V" id="video"><h2 class="anchor anchorWithStickyNavbar_LWe7 header_bEBW" id="video">Video Presentation about LIPS Scheme<a href="#video" class="hash-link" aria-label="Direct link to Video Presentation about LIPS Scheme" title="Direct link to Video Presentation about LIPS Scheme"></a></h2><p>Video presentation given during <a href="https://archive.fosdem.org/2023/">FOSDEM 2023</a> in <a href="https://archive.fosdem.org/2023/schedule/track/declarative_and_minimalistic_computing/">Declarative and Minimalistic Computing devroom</a>. It discuss different aspect of LIPS Scheme. It first gives quick intro to Lisp and Scheme and later show different features of LIPS Scheme.</p><video controls="" preload="none" poster="./img/fosdem-intro.png"><source src="https://video.fosdem.org/2023/D.minimalistic/lipsscheme.webm" type="video/webm; codecs="vp9, opus""><source src="https://video.fosdem.org/2023/D.minimalistic/lipsscheme.mp4" type="video/mp4"></video></div><div class="section_nB9V"><h2 class="anchor anchorWithStickyNavbar_LWe7 header_bEBW" id="acknowledgment">Acknowledgments<a href="#acknowledgment" class="hash-link" aria-label="Direct link to Acknowledgments" title="Direct link to Acknowledgments"></a></h2><ul><li>Font used in logo is <a href="https://www.dafont.com/telegrafico.font">Telegrafico</a> by <a href="https://www.deviantart.com/ficod">ficod</a>.</li><li>Current Parser is inspired by implementation in <a href="https://www.biwascheme.org/">BiwaScheme</a> by Yutaka HARA (yhara).</li><li><code>fetch</code> polyfill use <a href="https://github.com/developit/unfetch">unfetch</a> by Jason Miller.</li><li>Browser <code>init</code> function use <a href="http://javascript.nwbox.com/ContentLoaded/">ContentLoaded</a>.</li><li>The rationalize algorithm is based on <a href="https://www.gnu.org/software/kawa/index.html">Kawa Scheme</a> by Per M.A. Bothner, Alan Bawden and Marc Feeley.</li><li><code>ucs2decode</code> function taken from <a href="https://github.com/bestiejs/punycode.js">punycode.js</a> by <a href="https://mathiasbynens.be/">Mathias Bynens</a>.</li><li><a href="https://rosettacode.org/">Rosetta Code</a> was used for:<ul dir="auto"><li><a href="https://rosettacode.org/wiki/Greatest_common_divisor#JavaScript">gdc</a>,</li><li><a href="https://rosettacode.org/wiki/Least_common_multiple#JavaScript">lcm</a>,</li><li><a href="https://rosettacode.org/wiki/Convert_decimal_number_to_rational">LFloat::toRational</a>.</li></ul></li><li><a href="https://stackoverflow.com">StackOverlow</a> code was used for functions:<ul dir="auto"><li><a href="https://stackoverflow.com/a/10372280/387194">fworker</a>,</li><li><a href="https://stackoverflow.com/a/27282907/387194">flatten</a>,</li><li><a href="https://stackoverflow.com/a/4331218/387194">allPossibleCases</a>.</li></ul></li><li>Code formatter is roughly based on <a href="http://community.schemewiki.org/?scheme-style">scheme-style</a> and GNU Emacs scheme mode.</li><li>Some helpers in standard library are inspired by same functions from <a href="https://ramdajs.com/">RamdaJS library</a>.</li><li>Special thanks to <a href="https://github.com/lassik">Lassi Kortela</a> for helping with Scheme code.</li></ul></div><div class="section_nB9V"><h2 class="anchor anchorWithStickyNavbar_LWe7 header_bEBW" id="license">License<a href="#license" class="hash-link" aria-label="Direct link to License" title="Direct link to License"></a></h2><p>LIPS Scheme is <a href="https://opensource.com/resources/what-open-source">Open Source</a> <!-- -->and released on <a href="https://github.com/jcubic/lips/blob/master/LICENSE">MIT license</a></p></div></main></div><footer class="footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="col footer__col"><div class="footer__title">Docs</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/docs/intro">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/scheme-intro/what-is-lisp">Introduction to Scheme</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/category/lips-introduction">LIPS Scheme Introduction</a></li></ul></div><div class="col footer__col"><div class="footer__title">Community</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://gitter.im/jcubic/lips" target="_blank" rel="noopener noreferrer" class="footer__link-item">Gitter<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li class="footer__item"><a href="https://twitter.com/LIPS_scheme" target="_blank" rel="noopener noreferrer" class="footer__link-item">Twitter<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li></ul></div><div class="col footer__col"><div class="footer__title">More</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/blog/archive">Blog</a></li><li class="footer__item"><a href="https://github.com/LIPS-scheme/lips" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li></ul></div></div><div class="footer__bottom text--center"><div class="footer__copyright">Copyright (c) 2018-2024 <a href="https://jakub.jankiewicz.org">Jakub T. Jankiewicz</a><br>Website content licensed with <a href="https://creativecommons.org/licenses/by-sa/4.0/">CC BY-SA 4.0</a> unless noted otherwise.</div><a href="https://notbyai.fyi" aria-label="Created not by AI"><svg width="131" height="42" viewBox="0 0 131 42" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M.5.5H116c8.008 0 14.5 6.492 14.5 14.5v26.5H15C6.992 41.5.5 35.008.5 27V.5Z" fill="#000" stroke="#ACACAC"></path><path d="M17.96 24.157a9.446 9.446 0 0 0 11.89 0l-1.34-1.654a7.316 7.316 0 0 1-9.21 0l-1.34 1.654ZM19.404 20.513v-2.877h2.13v2.877h-2.13ZM26.012 17.637v2.876h2.13v-2.877h-2.13Z" fill="#fff"></path><path fill-rule="evenodd" clip-rule="evenodd" d="M35 21.5C35 27.851 29.851 33 23.5 33S12 27.851 12 21.5 17.149 10 23.5 10 35 15.149 35 21.5Zm-2.13 0a9.37 9.37 0 1 1-18.74 0 9.37 9.37 0 0 1 18.74 0Z" fill="#fff"></path><path d="M48.29 22.178c.99 0 1.798.263 2.425.79.632.52.949 1.388.949 2.601v6.516h-2.566V26.2c0-.509-.067-.9-.202-1.171-.246-.497-.715-.746-1.406-.746-.85 0-1.432.364-1.748 1.092-.164.385-.247.876-.247 1.474v5.237H43v-9.658h2.416v1.411c.323-.497.627-.855.914-1.074.516-.39 1.169-.586 1.96-.586ZM57.56 30.3c.733 0 1.295-.263 1.688-.79.392-.526.588-1.275.588-2.245 0-.97-.196-1.716-.588-2.237-.393-.527-.955-.79-1.688-.79-.732 0-1.297.263-1.695.79-.393.52-.59 1.266-.59 2.237 0 .97.197 1.719.59 2.246.398.526.963.79 1.695.79Zm4.903-3.035c0 1.42-.404 2.636-1.212 3.648-.808 1.006-2.036 1.51-3.682 1.51s-2.873-.504-3.681-1.51c-.809-1.012-1.213-2.228-1.213-3.648 0-1.397.404-2.607 1.213-3.631.808-1.024 2.035-1.536 3.681-1.536s2.873.512 3.682 1.536c.808 1.024 1.212 2.234 1.212 3.63ZM62.56 24.3v-1.802h1.336v-2.699h2.478v2.699h1.556V24.3h-1.556v5.113c0 .397.05.645.15.746.1.094.404.142.913.142h.238l.255-.018v1.89l-1.187.045c-1.183.042-1.991-.165-2.425-.621-.281-.29-.422-.737-.422-1.34V24.3h-1.335ZM77.602 22.196c1.26 0 2.244.458 2.952 1.376.715.917 1.072 2.1 1.072 3.55 0 1.504-.351 2.75-1.054 3.738-.703.988-1.684 1.483-2.944 1.483-.79 0-1.426-.16-1.906-.48-.287-.19-.598-.52-.932-.994v1.216H72.34V19.018h2.495v4.651c.316-.45.665-.793 1.046-1.03.45-.295 1.025-.443 1.722-.443Zm-.641 8.06c.644 0 1.145-.263 1.502-.79.358-.526.536-1.219.536-2.077 0-.686-.088-1.255-.263-1.704-.334-.853-.95-1.279-1.846-1.279-.908 0-1.531.418-1.871 1.252-.176.444-.264 1.018-.264 1.722 0 .829.182 1.515.545 2.06.363.544.917.816 1.66.816ZM83.094 33.94l.317.018a3.9 3.9 0 0 0 .703-.026c.222-.03.41-.098.562-.205.147-.1.281-.31.404-.63.13-.32.182-.515.159-.586L81.724 22.41h2.785l2.091 7.137 1.977-7.137h2.663l-3.286 9.516c-.633 1.835-1.134 2.971-1.503 3.41-.369.443-1.107.665-2.214.665-.223 0-.401-.003-.536-.009-.135 0-.337-.009-.606-.026V33.94ZM97.783 27.14h3.286l-1.617-5.148-1.669 5.148ZM97.95 19h3.058l4.586 13.085h-2.934l-.835-2.69h-4.771l-.897 2.69h-2.829L97.95 19ZM110.59 32.085h-2.688V19h2.688v13.085Z" fill="#fff"></path><path d="M106.306 19H112v2.226h-5.694V19ZM106.306 29.862H112v2.226h-5.694v-2.226ZM42.975 9.896l1.02 3.97 1.035-3.97h1l1.04 3.947 1.084-3.947h.892l-1.54 5.039h-.926l-1.08-3.9-1.044 3.9h-.926L42 9.896h.975ZM49.816 9.896h.846v.87c.07-.169.24-.374.51-.616a1.354 1.354 0 0 1 1.02-.362l.203.019v.893a1.378 1.378 0 0 0-.292-.023c-.449 0-.794.138-1.035.414-.24.273-.361.588-.361.946v2.898h-.891V9.896ZM53.066 9.92h.906v5.015h-.906V9.919Zm0-1.896h.906v.96h-.906v-.96ZM55.4 8.49h.902v1.406h.846v.692h-.846v3.288c0 .176.063.293.188.353.07.035.185.052.347.052h.138c.05-.003.108-.008.173-.014v.668c-.102.028-.21.048-.321.06a3.114 3.114 0 0 1-.357.02c-.416 0-.698-.1-.846-.302-.149-.203-.223-.467-.223-.79v-3.335h-.718v-.692h.718V8.489ZM58.121 8.49h.902v1.406h.846v.692h-.846v3.288c0 .176.062.293.188.353.07.035.185.052.346.052h.139c.05-.003.107-.008.173-.014v.668c-.102.028-.21.048-.322.06a3.115 3.115 0 0 1-.356.02c-.416 0-.698-.1-.847-.302-.148-.203-.223-.467-.223-.79v-3.335h-.717v-.692h.717V8.489ZM62.872 9.783c.377 0 .741.085 1.095.254.353.166.622.383.807.65.178.253.297.55.356.889.053.232.08.602.08 1.11h-3.887c.016.511.143.922.38 1.232.238.308.606.462 1.105.462.465 0 .837-.146 1.114-.438.158-.17.27-.365.337-.588h.876c-.023.185-.1.392-.233.62a2.113 2.113 0 0 1-1.44 1.063 3.21 3.21 0 0 1-.728.076c-.66 0-1.22-.227-1.679-.682-.459-.458-.688-1.097-.688-1.92 0-.808.231-1.465.693-1.97.462-.505 1.066-.758 1.812-.758Zm1.421 2.23c-.036-.367-.12-.66-.252-.88-.244-.407-.652-.611-1.223-.611-.41 0-.753.14-1.03.423-.277.28-.424.635-.44 1.068h2.945ZM66.207 9.896h.847v.715c.25-.295.516-.507.797-.635a2.22 2.22 0 0 1 .936-.193c.752 0 1.26.25 1.525.748.145.273.218.663.218 1.172v3.232h-.907v-3.176c0-.307-.047-.555-.143-.743-.159-.314-.446-.47-.862-.47-.21 0-.384.02-.52.06a1.344 1.344 0 0 0-.643.414 1.25 1.25 0 0 0-.292.518 3.39 3.39 0 0 0-.065.757v2.64h-.89V9.896ZM74.401 8h.867v2.508c.195-.242.427-.425.698-.55.27-.13.565-.194.881-.194.66 0 1.195.217 1.605.65.412.43.618 1.064.618 1.905 0 .796-.202 1.458-.608 1.985-.407.527-.97.79-1.689.79-.402 0-.742-.092-1.02-.277-.165-.11-.341-.285-.53-.527v.645h-.822V8Zm2.318 6.347c.482 0 .841-.182 1.08-.546.24-.364.36-.844.36-1.44 0-.53-.12-.969-.36-1.317-.239-.348-.59-.522-1.056-.522-.405 0-.762.142-1.069.428-.304.285-.456.756-.456 1.411 0 .474.063.858.189 1.153.234.555.671.833 1.312.833ZM83.326 9.896h.986c-.126.323-.405 1.06-.837 2.211-.324.866-.594 1.572-.812 2.117-.515 1.286-.878 2.07-1.09 2.353-.21.282-.574.423-1.089.423-.125 0-.223-.005-.292-.014a2.452 2.452 0 0 1-.247-.052v-.771c.155.04.267.065.336.075.07.01.13.014.183.014.165 0 .286-.027.362-.08a.69.69 0 0 0 .198-.188 22.88 22.88 0 0 0 .401-.903l-1.96-5.185h1.01l1.42 4.102 1.431-4.102ZM87.703 8h.891v2.578c.212-.254.402-.433.57-.536.287-.179.645-.268 1.074-.268.77 0 1.29.255 1.565.767.148.279.223.666.223 1.162v3.232h-.916v-3.176c0-.37-.05-.641-.149-.814-.162-.276-.465-.414-.91-.414-.37 0-.706.12-1.006.362-.3.242-.45.698-.45 1.37v2.672h-.892V8ZM94.138 9.896v3.345c0 .257.042.467.128.63.159.301.454.452.886.452.621 0 1.043-.263 1.268-.79.122-.283.183-.67.183-1.162V9.896h.891v5.039h-.841l.01-.744c-.116.192-.26.353-.431.485-.34.263-.753.395-1.238.395-.756 0-1.27-.24-1.545-.72-.148-.257-.222-.6-.222-1.03V9.896h.91ZM98.79 9.896h.88v.715c.212-.248.403-.428.575-.541a1.792 1.792 0 0 1 1-.287c.423 0 .763.099 1.02.296.145.113.277.28.396.5.198-.27.431-.47.698-.598.268-.132.568-.198.901-.198.713 0 1.199.245 1.456.734.139.263.208.618.208 1.063v3.355h-.926v-3.5c0-.336-.089-.567-.267-.692a1.077 1.077 0 0 0-.644-.188c-.35 0-.652.111-.906.334-.251.222-.376.594-.376 1.115v2.93h-.906v-3.288c0-.342-.043-.591-.129-.748-.135-.235-.388-.353-.758-.353-.336 0-.643.124-.921.372-.274.248-.41.696-.41 1.345v2.673h-.892V9.896ZM107.818 13.594c0 .245.094.437.282.579.188.14.411.211.669.211.313 0 .617-.069.911-.207.495-.229.742-.604.742-1.124v-.682c-.109.066-.249.12-.421.164-.171.044-.34.076-.505.094l-.539.066c-.324.041-.566.105-.728.193-.274.148-.411.383-.411.706Zm2.159-1.713c.204-.025.341-.106.411-.244a.72.72 0 0 0 .059-.325c0-.288-.109-.497-.327-.626-.214-.131-.523-.197-.926-.197-.465 0-.795.119-.99.357-.109.132-.18.328-.213.588h-.832c.017-.62.228-1.052.634-1.293.409-.245.883-.367 1.421-.367.624 0 1.131.113 1.52.338.386.226.579.578.579 1.054v2.903c0 .088.019.158.055.212.04.053.12.08.243.08.039 0 .084-.002.133-.005a3.93 3.93 0 0 0 .159-.024v.626a2.661 2.661 0 0 1-.317.07c-.073.01-.172.015-.297.015-.307 0-.53-.104-.669-.31a1.156 1.156 0 0 1-.153-.466c-.182.225-.443.421-.783.588-.339.166-.714.249-1.123.249-.492 0-.895-.141-1.209-.423a1.392 1.392 0 0 1-.465-1.068c0-.468.154-.83.461-1.087.306-.257.709-.416 1.208-.475l1.421-.17ZM112.678 9.896h.846v.715c.251-.295.517-.507.797-.635.281-.129.593-.193.936-.193.753 0 1.261.25 1.525.748.145.273.218.663.218 1.172v3.232h-.906v-3.176c0-.307-.048-.555-.144-.743-.158-.314-.445-.47-.861-.47-.211 0-.385.02-.52.06a1.347 1.347 0 0 0-.644.414 1.253 1.253 0 0 0-.292.518c-.043.175-.064.428-.064.757v2.64h-.891V9.896Z" fill="#fff"></path></svg></a></div></div><div class="arrow_aTix"><svg width="361.514" height="361.514" viewBox="0 0 95.651 95.651" xmlns="http://www.w3.org/2000/svg"><g transform="translate(-58.796 -13.995)"><circle style="fill:#e6e6e6;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4.79999;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1" cx="106.621" cy="61.821" r="47.825"></circle><path style="fill:#ff5300;fill-rule:evenodd;stroke-width:3.70417;stroke-linecap:square" d="M94.271 32.634a3.252 3.252 0 0 0-3.26 3.26v31.111h-6.33a2.612 2.01 0 0 0-2.194 3.101l21.58 25.686a2.99 2.3 0 0 0 5.02 0l21.685-25.81a2.507 1.929 0 0 0-2.105-2.977h-6.525V35.894a3.252 3.252 0 0 0-3.26-3.26z"></path></g></svg></div><script>var owa_baseUrl="https://stats.jcubic.pl/",owa_cmds=owa_cmds||[];owa_cmds.push(["setSiteId","922150e605063a8580e17047ffbf3ec2"]),owa_cmds.push(["trackPageView"]),owa_cmds.push(["trackClicks"]),function(){var e=document.createElement("script");e.type="text/javascript",e.async=!0,owa_baseUrl="https:"==document.location.protocol?window.owa_baseSecUrl||owa_baseUrl.replace(/http:/,"https:"):owa_baseUrl,e.src=owa_baseUrl+"modules/base/js/owa.tracker-combined-min.js";var a=document.getElementsByTagName("script")[0];a.parentNode.insertBefore(e,a)}()</script></footer></div>
</body>
</html>