<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/xhtml; charset=utf-8">
<style>
div.plaintext { white-space: normal; }
body { font-family: sans-serif; }
div.plaintext h1 { font-size: 1.4em; }
div.plaintext h2 { font-size: 1.2em; }
div.plaintext h3 { font-size: 1.1em; }
blockquote.embedded,div.plaintext blockquote { margin: 0 0 5px; padding-left: 5px; border-left: 2px solid #777777; color: #777777; }
blockquote.embedded blockquote.embedded,div.plaintext blockquote blockquote { border-left-color: #999999; color: #999999; }
blockquote.embedded blockquote.embedded blockquote.embedded,div.plaintext blockquote blockquote blockquote { border-left-color: #BBBBBB; color: #BBBBBB; }
div.plaintext a { color: #3983C4; }
blockquote.embedded,div.plaintext blockquote a { color: #777777; }
blockquote.embedded blockquote.embedded,div.plaintext blockquote blockquote a { color: #999999; }
blockquote.embedded blockquote.embedded blockquote.embedded,div.plaintext blockquote blockquote blockquote a { color: #BBBBBB; }
div.plaintext math[display="inline"] > mrow { padding:5px; }
div.plaintext div.footnotes li p { margin: 0.2em 0; }
</style>
</head>
<body>
<div class="plaintext"><p dir="auto">Thanks Iain, great observations and info. Yes, we’ve read s7.html many times and will continue to do so. There’s a lot of great info there! (We’ve found many of the included scm files are also good sources too.)
</p>
<p dir="auto">FYI, we’re looking at adopting R7RS more as a future-proofing strategy than “we need every single feature and exact compatibility”. Having successfully shipped some basic functionality on iOS as a proof-of-concept, we’re stepping back and tweaking our development environment &amp; tooling. Currently we’re attempting to run our code with Guile and its R7RS libraries, in part to take advantage of the nice tooling in Geiser in Emacs. The goal is to have our integration &amp; unit tests run in both s7 and Guile (and/or other R7RS-compatible Schemes) with minimal shim layers. If we can keep the ease of embedding, small size and performance of s7 for mobile while doing this, then dare I say we’ll have our cake and eat it too? :)
</p>
<p dir="auto">Cheers, Michael
</p>
<p dir="auto">On 17 Jan 2022, at 23:52, Iain Duncan wrote:
</p>
</div><blockquote class="embedded"><div id="132C8E92-7422-4A0D-940D-2487EB054EEB"><div dir="ltr">Hi Rudolf, Bill would be the person to address this better than me, but I think the Egghead team should read through the s7.html page pretty closely to see if s7 is a good fit. It&#39;s pretty clear in there that there is *limited* R7RS compatibility, but that s7 is not R7RS and nor is that a stated goal. For example, s7 does not do macros with syntax-case or syntax-rules, but uses CL style macros. If R7RS is what you need, you might be better off with an implementation that makes that a goal, such as Chibi. I use s7 embedded in audio programs, which shares a fair bit of domain space with games, and I personally chose s7 because the performance and ease of embedding made up for that, but YMMV!<div><br></div><div>HTH</div><div>iain</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Jan 17, 2022 at 7:36 AM Rudolf Adamkovič &lt;<a href="mailto:salutis@me.com">salutis@me.com</a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi there!<br>
<br>
At Egghead Games, we would like to use Scheme for in-app scripting.  We<br>
wired up s7 and SQLite to kick things off, but s7 support for R7RS does<br>
not seem to work.  Below, I include some examples to illustrate my<br>
point.<br>
<br>
A basic example from the R7RS standard, page 54, …<br>
<br>
(with-exception-handler<br>
    (lambda (x)<br>
      (display &quot;something went wrong\n&quot;))<br>
  (lambda ()<br>
    (+ 1 (raise ’an-error))))<br>
<br>
… results in:<br>
<br>
&gt; Error: catch error handler should accept two arguments: #&lt;lambda (x)&gt;<br>
<br>
The simplest library …<br>
<br>
(load &quot;r7rs.scm&quot;)<br>
(define-library (some lib)<br>
  (export some-proc)<br>
  (import (scheme base)<br>
          (scheme r5rs))<br>
  (begin<br>
    (define (some-proc x)<br>
      (display x))))<br>
<br>
… results in:<br>
<br>
&gt; Error: symbol-&gt;value first argument, {gensym}-1, is a macro but should<br>
&gt; be a symbol (define-macro ({gensym}-1 . names)...<br>
<br>
We picked s7 because the website says …<br>
<br>
&gt; I believe it is compatible with r5rs and r7r<br>
<br>
… but per a quick grep, there seem to exist no tests for define-library<br>
or with-exception-handler.<br>
<br>
Any ideas?<br>
<br>
Rudy<br>
-- <br>
&quot;Logic is a science of the necessary laws of thought, without which no<br>
employment of the understanding and the reason takes place.&quot; -- Immanuel<br>
Kant, 1785<br>
<br>
Rudolf Adamkovič &lt;<a href="mailto:salutis@me.com" target="_blank">salutis@me.com</a>&gt; [he/him]<br>
Studenohorská 25<br>
84103 Bratislava<br>
Slovakia<br>
<br>
_______________________________________________<br>
Cmdist mailing list<br>
<a href="mailto:Cmdist@ccrma.stanford.edu" target="_blank">Cmdist@ccrma.stanford.edu</a><br>
<a href="https://cm-mail.stanford.edu/mailman/listinfo/cmdist" rel="noreferrer" target="_blank">https://cm-mail.stanford.edu/mailman/listinfo/cmdist</a><br>
</blockquote></div></div></blockquote>
<div class="plaintext">
<blockquote><p dir="auto">_______________________________________________
<br />
Cmdist mailing list
<br />
Cmdist@ccrma.stanford.edu
<br />
<a href="https://cm-mail.stanford.edu/mailman/listinfo/cmdist">https://cm-mail.stanford.edu/mailman/listinfo/cmdist</a>
</p>
</blockquote></div>

</body>
</html>