Repository navigation
Expand file tree
/
Copy pathindex.html
More file actions
60 lines (60 loc) · 4.72 KB
/
Copy pathindex.html
File metadata and controls
60 lines (60 loc) · 4.72 KB
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
<!DOCTYPE html>
<html>
<head>
<!-- SPDX-FileCopyrightText: 2026 Arthur A. Gleckler -->
<!-- SPDX-License-Identifier: MIT -->
<title>Mixing groups of definitions with expressions within bodies</title>
<script>!function(s, k, mq, r) {
var p = s.getItem(k), v = [null, 'light', 'dark'],
S = '<svg viewBox="0 0 20 20" width="1em" height="1em">',
C = '<circle cx="10" cy="10" r="9" ',
c = [S + C + 'fill="none" stroke="currentColor" stroke-width="2"/><path d="M10 1A9 9 0 0 0 10 19Z" fill="currentColor"/></svg>',
S + C + 'fill="none" stroke="currentColor" stroke-width="2"/></svg>',
S + C + 'fill="black" stroke="white" stroke-width="2"/></svg>'];
function a(t) { r.dataset.theme = t || (mq.matches ? 'dark' : 'light') }
a(p);
mq.onchange = function() { s.getItem(k) || a() };
document.addEventListener('DOMContentLoaded', function() {
var i = Math.max(0, v.indexOf(p)),
b = document.body.appendChild(document.createElement('button'));
b.id = 'theme-toggle';
function u() { b.innerHTML = c[i]; b.title = (v[i] || 'system') + ' theme' }
b.onclick = function() { i = (i + 1) % 3; v[i] ? s.setItem(k, v[i]) : s.removeItem(k); a(v[i]); u() };
u()
})
}(localStorage, 'theme', matchMedia('(prefers-color-scheme: dark)'), document.documentElement);
</script>
<link href="/admin.css" rel="stylesheet">
<link href="/list.css" rel="stylesheet">
<link href="/favicon.png" rel="icon" sizes="192x192" type="image/png">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<script type="text/x-mathjax-config">MathJax.Hub.Config({tex2jax: {inlineMath: [['$','$'], ['\\(','\\)']]}});</script>
<script crossorigin="anonymous" integrity="sha384-Ra6zh6uYMmH5ydwCqqMoykyf1T/+ZcnOQfFPhDrp2kI4OIxadnhsvvA2vv9A7xYv" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript"></script></head>
<body>
<h1>SRFI 251: Mixing groups of definitions with expressions within bodies</h1>
<p class="authors">by Sergei Egorov</p>
<p class="based-on"></p>
<p class="status">status: <em>final</em> (2024-05-06)</p>
<p class="keywords">keywords: <a href="https://srfi.schemers.org/?keywords=binding">Binding</a></p><span class="see-also">See also <a href="/srfi-245/">SRFI 245: Mixing definitions and expressions within bodies</a>.</span>
<ul class="info">
<li><a href="srfi-251.html">The SRFI Document</a></li>
<li><a href="https://srfi-email.schemers.org/srfi-251/">Discussion Archive</a></li>
<li><a href="https://github.com/scheme-requests-for-implementation/srfi-251">Git repo (on GitHub)</a></li>
<li><a href="mailto:srfi-251@srfi.schemers.org">srfi-251@<span class="antispam">nospam</span>srfi.schemers.org (subscribers only)</a></li>
<li><span class="firefox-column-workaround">
<form method="POST" action="https://www.simplelists.com/subscribe.php">
<div class="title">Subscribe to srfi-251 mailing list</div><input name="email" placeholder="email address" tabindex="1" type="email"><input name="name" placeholder="full name" tabindex="2" type="text">
<p><input id="sub-digest" name="digest" tabindex="3" type="checkbox" value="digest"><label for="sub-digest">daily digest?</label></p><input class="submit" name="submit" tabindex="4" type="submit" value="Subscribe to srfi-251"><input type="hidden" name="action" value="subscribe"><input type="hidden" name="list" value="srfi-251@srfi.schemers.org"></form></span></li>
<li><span class="firefox-column-workaround">
<form method="POST" action="https://www.simplelists.com/subscribe.php">
<div class="title">Unsubscribe from srfi-251 mailing list</div><input name="email" placeholder="email address" tabindex="5" type="email"><input class="submit" name="submit" tabindex="6" type="submit" value="Unsubscribe from srfi-251"><input type="hidden" name="action" value="unsubscribe"><input name="list" type="hidden" value="srfi-251@srfi.schemers.org"></form></span></li></ul>
<h2>Abstract</h2><p> Scheme has traditionally required procedure bodies and the bodies of derived constructs such as <code>let</code> to contain definitions followed by commands/expressions. This SRFI proposes to allow mixing commands and groups of definitions in such bodies, so that each command/expression is in the scope of all local definition groups preceding it, but not in scope of the local definition groups following it. This approach is backwards compatible with R7RS and upholds the intuitive rule that to find the definition of a lexical variable, one has to look <em>up</em> the source code tree. </p></body></html>