veganism.social is one of the many independent Mastodon servers you can use to participate in the fediverse.
Veganism Social is a welcoming space on the internet for vegans to connect and engage with the broader decentralized social media community.

Administered by:

Server stats:

302
active users

#schemelang

1 post1 participant0 posts today
Ramin HonaryThe <a class="hashtag" href="https://fe.disroot.org/tag/lispygopherclimate" rel="nofollow noopener noreferrer" target="_blank">#LispyGopherClimate</a> <a class="hashtag" href="https://fe.disroot.org/tag/weekly" rel="nofollow noopener noreferrer" target="_blank">#weekly</a> <a class="hashtag" href="https://fe.disroot.org/tag/tech" rel="nofollow noopener noreferrer" target="_blank">#tech</a> <a class="hashtag" href="https://fe.disroot.org/tag/podcast" rel="nofollow noopener noreferrer" target="_blank">#podcast</a> for 2025-04-02 <p>Listen at: <a href="https://archives.anonradio.net/202504020000_screwtape.mp3" rel="nofollow noopener noreferrer" target="_blank">https://archives.anonradio.net/202504020000_screwtape.mp3</a></p><p>This week we will talk about the Unix Philosophy and how it compares and contrasts with whatever one might call the “Emacs Philosophy.”</p><p>The impetus for the discussion is a series of blog posts by <span class="h-card"><a class="u-url mention" href="https://fe.disroot.org/users/ramin_hal9001" rel="nofollow noopener noreferrer" target="_blank">@<span>ramin_hal9001</span></a></span> called “Emacs fulfills the UNIX Philosophy”:</p><ul><li><a href="https://tilde.town/~ramin_hal9001/articles/emacs-fulfills-the-unix-philosophy.html" rel="nofollow noopener noreferrer" target="_blank">The original introductory blog post</a></li><li><a href="https://codeberg.org/ramin_hal9001/lisp-gopher-climate_chat-about-emacs/src/branch/main/show-outline.org" rel="nofollow noopener noreferrer" target="_blank">The show notes</a></li></ul><p>…as well as a fascinating <a href="https://mastodon.sdf.org/@screwtape/114225644895007169" rel="nofollow noopener noreferrer" target="_blank">discussion</a> that took place over this past week on ActivityPub on the topic of the Unix philosophy and history of Lisp on Unix in which some very knowledgeable people have contributed anecdotes and facts.</p><p><a class="hashtag" href="https://fe.disroot.org/tag/technology" rel="nofollow noopener noreferrer" target="_blank">#technology</a> <a class="hashtag" href="https://fe.disroot.org/tag/programming" rel="nofollow noopener noreferrer" target="_blank">#programming</a> <a class="hashtag" href="https://fe.disroot.org/tag/softwareengineering" rel="nofollow noopener noreferrer" target="_blank">#SoftwareEngineering</a> <a class="hashtag" href="https://fe.disroot.org/tag/retrocomputing" rel="nofollow noopener noreferrer" target="_blank">#RetroComputing</a> <a class="hashtag" href="https://fe.disroot.org/tag/lisp" rel="nofollow noopener noreferrer" target="_blank">#lisp</a> <a class="hashtag" href="https://fe.disroot.org/tag/r7rs" rel="nofollow noopener noreferrer" target="_blank">#r7rs</a> <a class="hashtag" href="https://fe.disroot.org/tag/schemelang" rel="nofollow noopener noreferrer" target="_blank">#SchemeLang</a> <a class="hashtag" href="https://fe.disroot.org/tag/unixphilosophy" rel="nofollow noopener noreferrer" target="_blank">#UnixPhilosophy</a></p> This weeks <a class="hashtag" href="https://fe.disroot.org/tag/climatecrisis" rel="nofollow noopener noreferrer" target="_blank">#ClimateCrisis</a> <a class="hashtag" href="https://fe.disroot.org/tag/haiku" rel="nofollow noopener noreferrer" target="_blank">#haiku</a> by <span class="h-card"><a class="u-url mention" href="https://climatejustice.social/@kentpitman" rel="nofollow noopener noreferrer" target="_blank">@<span>kentpitman</span></a></span><pre><code>within each of us our loved ones, in tiny form, caring's innate yield company at a distance legacy in case of loss</code></pre><p><a class="hashtag" href="https://fe.disroot.org/tag/senryu" rel="nofollow noopener noreferrer" target="_blank">#senryu</a> <a class="hashtag" href="https://fe.disroot.org/tag/poem" rel="nofollow noopener noreferrer" target="_blank">#poem</a> <a class="hashtag" href="https://fe.disroot.org/tag/shortpoem" rel="nofollow noopener noreferrer" target="_blank">#ShortPoem</a> <a class="hashtag" href="https://fe.disroot.org/tag/smallpoem" rel="nofollow noopener noreferrer" target="_blank">#SmallPoem</a> <a class="hashtag" href="https://fe.disroot.org/tag/smallpoems" rel="nofollow noopener noreferrer" target="_blank">#SmallPoems</a></p>
Ramin Honary<blockquote><p>What I don’t like:</p><ul><li>some stuff breaks “everything is a list” model</li><li>Common Lisp is not minimal, includes overlapping and legacy stuff</li></ul><p>does <a class="hashtag" href="https://fe.disroot.org/tag/scheme" rel="nofollow noopener noreferrer" target="_blank">#scheme</a> address this?</p></blockquote><p><span class="h-card"><a class="u-url mention" href="https://mastodon.social/@rzeta0" rel="nofollow noopener noreferrer" target="_blank">@<span>rzeta0</span></a></span> I would say yes, Scheme sort of addresses those issues.</p><p>Scheme’s biggest advantage is that it is minimal enough that you can understand the whole language specification top-to-bottom, inside and out. But that is also it’s greatest drawback: is that it is too minimal to be practical. So for a long time, every single Scheme implementation has a it’s own large and unique set of libraries for solving practical programming problems that were incompatible with other Scheme implementations, making the Scheme ecosystem very fragmented. The <a href="https://srfi.schemers.org/%20" rel="nofollow noopener noreferrer" target="_blank">Scheme Request for Implementation (SRFI) process</a> is meant to address this fragmentation issue. Fragmentation is still (in my opinion) a pretty big problem, though things are much better than they were 20 years ago.</p><p>The R6RS standard, as I understand it, tried to make Scheme more practical, but it started to become too Common Lisp-like in complexity so it was mostly rejected by the Scheme community — with a few notable exceptions, like the <a href="https://www.scheme.com" rel="nofollow noopener noreferrer" target="_blank">Chez Scheme compiler</a>.</p><p>The next standard, R7RS, split the language into two parts: “R7RS small,” ratified in 2014, which is more like the original minimal core of the Scheme language, but just a few new features, in particular the <code>define-library</code> macro, for modularizing parts of Scheme programs into immutable environment objects. Then they took a collection of “SRFIs” and declared them to be part of the “R7RS large” language standard. The full “large” language specification is not yet fully ratified, even 11 years after the completion of R7RS “small,” but I think the SRFIs they have ratified so far already make the latest Scheme standard a very practical language. The final R7RS standard may end up being larger than Common Lisp, but that is fine with me since it can be almost completely implemented in the R7RS “small” Scheme standard.</p><p>R7RS “small” Scheme, in my opinion, is a powerful but minimal language that exists to implement other languages, but is still useful in it’s own right as a progeny of Lisp. The “R7RS large” language then adds the useful features of larger languages like Python or Common Lisp as a layer on top of the “R7RS small” language.</p><p>The current chair of the R7RS working group is Daphne Preston Kendal, and is often on Mastodon as <span class="h-card"><a class="u-url mention" href="https://chaos.social/@dpk" rel="nofollow noopener noreferrer" target="_blank">@<span>dpk</span></a></span> . She can tell you if I got anything in this post wrong.</p><p><a class="hashtag" href="https://fe.disroot.org/tag/tech" rel="nofollow noopener noreferrer" target="_blank">#tech</a> <a class="hashtag" href="https://fe.disroot.org/tag/software" rel="nofollow noopener noreferrer" target="_blank">#software</a> <a class="hashtag" href="https://fe.disroot.org/tag/schemelang" rel="nofollow noopener noreferrer" target="_blank">#SchemeLang</a> <a class="hashtag" href="https://fe.disroot.org/tag/r7rs" rel="nofollow noopener noreferrer" target="_blank">#R7RS</a> <a class="hashtag" href="https://fe.disroot.org/tag/programminglanguage" rel="nofollow noopener noreferrer" target="_blank">#ProgrammingLanguage</a></p>
Ramin Honary<p><span class="h-card"><a class="u-url mention" href="https://mathstodon.xyz/@xameer" rel="nofollow noopener noreferrer" target="_blank">@<span>xameer</span></a></span> the “R7RS small” Scheme standard has a full numerical tower built-in, including unbounded integers.</p><pre><code>(- (+ (expt 10 100) 1) (expt 10 100))</code></pre><p>gives you precisely the correct answer without any floating-point operations. Although macros for symbolic computation with optimization that would avoid computation of <code>(expr 10 100)</code> is “an exercise left to the reader.” Haskell <em>might</em> do the optimal computation though thanks to it’s lazy evaluation.</p><p><a class="hashtag" href="https://fe.disroot.org/tag/tech" rel="nofollow noopener noreferrer" target="_blank">#tech</a> <a class="hashtag" href="https://fe.disroot.org/tag/computers" rel="nofollow noopener noreferrer" target="_blank">#computers</a> <a class="hashtag" href="https://fe.disroot.org/tag/software" rel="nofollow noopener noreferrer" target="_blank">#software</a> <a class="hashtag" href="https://fe.disroot.org/tag/functionalprogramming" rel="nofollow noopener noreferrer" target="_blank">#FunctionalProgramming</a> <a class="hashtag" href="https://fe.disroot.org/tag/lisp" rel="nofollow noopener noreferrer" target="_blank">#Lisp</a> <a class="hashtag" href="https://fe.disroot.org/tag/schemelang" rel="nofollow noopener noreferrer" target="_blank">#SchemeLang</a> <a class="hashtag" href="https://fe.disroot.org/tag/scheme" rel="nofollow noopener noreferrer" target="_blank">#Scheme</a> <a class="hashtag" href="https://fe.disroot.org/tag/r7rs" rel="nofollow noopener noreferrer" target="_blank">#R7RS</a></p>
Ramin Honary<blockquote><p>Are you a Lisper? If yes, What made <a class="hashtag" href="https://fe.disroot.org/tag/lisp" rel="nofollow noopener noreferrer" target="_blank">#lisp</a> special in your view? </p></blockquote><p><span class="h-card"><a class="u-url mention" href="https://mastodon.social/@lxsameer" rel="nofollow noopener noreferrer" target="_blank">@<span>lxsameer</span></a></span> a few things:</p><ul><li><strong>absolute minimum amount of syntax,</strong> makes it very easy to understand how the computer sees each part of the program, makes it easy to implement your own parser if you want to.</li><li><strong>the ability to define your own evaluator for Lisp syntax,</strong> also made considerably easier than other languages due to the minimal syntax. This also makes it easy to develop your own tooling, or to modify existing tooling for the language, which brings me to the next point…</li><li><strong>macro programming:</strong> the ability to hack the Lisp compiler itself so that it can run your own evaluator. This allows you to introduce language features when and where you need them, like linting, type checking, literate programming, alternative evaluation strategies (e.g. lazy evaluation, or concurrent evaluation), etc.</li><li><strong>functional programming:</strong> it is based on the mathematics of lambda calculus, which is a very elegant way of defining algorithms and computation. It is also a computer for the “<em>untyped lambda calculus</em>“ which can implement any other typed lambda calculus as a system of macros.</li><li><strong>homoiconicity,</strong> again a feature of the minimal syntax, allows you to express programs as data, and data as programs. This is very useful for serialization and transport across multiple computers.</li><li><strong>REPL-based development,</strong> which is a feature many languages have nowadays (although Lisp invented this feature), allows for rapid prototyping and easier debugging.</li><li><strong>stability:</strong> Lisp languages like Common Lisp and Scheme have changed very little throughout the decades as there is no need to change them. Macro programming makes it so that you don’t need too add new language features all the time, language features become extensions you can import into your project.</li></ul><p><a class="hashtag" href="https://fe.disroot.org/tag/tech" rel="nofollow noopener noreferrer" target="_blank">#tech</a> <a class="hashtag" href="https://fe.disroot.org/tag/software" rel="nofollow noopener noreferrer" target="_blank">#software</a> <a class="hashtag" href="https://fe.disroot.org/tag/computerprogramming" rel="nofollow noopener noreferrer" target="_blank">#ComputerProgramming</a> <a class="hashtag" href="https://fe.disroot.org/tag/lisp" rel="nofollow noopener noreferrer" target="_blank">#Lisp</a> <a class="hashtag" href="https://fe.disroot.org/tag/commonlisp" rel="nofollow noopener noreferrer" target="_blank">#CommonLisp</a> <a class="hashtag" href="https://fe.disroot.org/tag/schemelang" rel="nofollow noopener noreferrer" target="_blank">#SchemeLang</a> <a class="hashtag" href="https://fe.disroot.org/tag/scheme" rel="nofollow noopener noreferrer" target="_blank">#Scheme</a> <a class="hashtag" href="https://fe.disroot.org/tag/clojure" rel="nofollow noopener noreferrer" target="_blank">#Clojure</a> <a class="hashtag" href="https://fe.disroot.org/tag/fennellang" rel="nofollow noopener noreferrer" target="_blank">#FennelLang</a> <a class="hashtag" href="https://fe.disroot.org/tag/gerbillang" rel="nofollow noopener noreferrer" target="_blank">#GerbilLang</a> <a class="hashtag" href="https://fe.disroot.org/tag/racketlang" rel="nofollow noopener noreferrer" target="_blank">#RacketLang</a></p>
Ramin Honary<a href="https://github.com/objecthub/swift-lispkit" rel="nofollow noopener noreferrer" target="_blank">Swift LispKit</a> is a Scheme written in Swift <p>It is odd that I had not heard about this <a class="hashtag" href="https://fe.disroot.org/tag/scheme" rel="nofollow noopener noreferrer" target="_blank">#Scheme</a> implementation until very recently. I can find almost no reference to it anywhere on the <a href="http://scheme.org" rel="nofollow noopener noreferrer" target="_blank">scheme.org</a> website or the <a href="http://r7rs.org" rel="nofollow noopener noreferrer" target="_blank">r7rs.org</a> website, although they advertise compliance with the R7RS standard.</p><p>I installed the “LispPad” app (the Mac OS front-end to Swift LispKit) and</p><ul><li>it follows the modern Mac OS user interface guidelines pretty well</li><li>implements a large number of SRFI extensions</li><li>provides a very large array of libraries to extend the core features of R7RS</li><li>provides thorough online documentation</li></ul><p>That said, I have found the LispPad GUI prety difficult to use, mostly because when I use the REPL, pressing enter does not execute the input, it seem like you must use the mouse to press a little “execute” button instead. The GUI seems to be designed more for use on tablets than on PCs. And I haven’t figured out how to use it from the terminal yet either.</p><p>It seem like a pretty good implementation though, and I am wondering why I haven’t heard much talk about it anywhere?</p><p><a class="hashtag" href="https://fe.disroot.org/tag/tech" rel="nofollow noopener noreferrer" target="_blank">#tech</a> <a class="hashtag" href="https://fe.disroot.org/tag/software" rel="nofollow noopener noreferrer" target="_blank">#software</a> <a class="hashtag" href="https://fe.disroot.org/tag/lisp" rel="nofollow noopener noreferrer" target="_blank">#Lisp</a> <a class="hashtag" href="https://fe.disroot.org/tag/schemelang" rel="nofollow noopener noreferrer" target="_blank">#SchemeLang</a> <a class="hashtag" href="https://fe.disroot.org/tag/lisppad" rel="nofollow noopener noreferrer" target="_blank">#LispPad</a> <a class="hashtag" href="https://fe.disroot.org/tag/swiftlispkit" rel="nofollow noopener noreferrer" target="_blank">#SwiftLispKit</a></p>
Ramin Honary<p><span class="h-card"><a class="u-url mention" href="https://mastodon.social/@wingo" rel="nofollow noopener noreferrer" target="_blank">@<span>wingo</span></a></span> is asking if anyone knows of a good course on the Nanopass framework (perhaps to recommend to others), but as usual he forgot to add hashtags to his post. So please reply to this post here: <a href="https://mastodon.social/@wingo/113956474737820425" rel="nofollow noopener noreferrer" target="_blank">https://mastodon.social/@wingo/113956474737820425</a></p><p><a class="hashtag" href="https://fe.disroot.org/tag/tech" rel="nofollow noopener noreferrer" target="_blank">#tech</a> <a class="hashtag" href="https://fe.disroot.org/tag/software" rel="nofollow noopener noreferrer" target="_blank">#software</a> <a class="hashtag" href="https://fe.disroot.org/tag/lisp" rel="nofollow noopener noreferrer" target="_blank">#Lisp</a> <a class="hashtag" href="https://fe.disroot.org/tag/scheme" rel="nofollow noopener noreferrer" target="_blank">#Scheme</a> <a class="hashtag" href="https://fe.disroot.org/tag/schemelang" rel="nofollow noopener noreferrer" target="_blank">#SchemeLang</a> <a class="hashtag" href="https://fe.disroot.org/tag/r7rs" rel="nofollow noopener noreferrer" target="_blank">#R7RS</a> <a class="hashtag" href="https://fe.disroot.org/tag/r6rs" rel="nofollow noopener noreferrer" target="_blank">#R6RS</a> <a class="hashtag" href="https://fe.disroot.org/tag/guilescheme" rel="nofollow noopener noreferrer" target="_blank">#GuileScheme</a> <a class="hashtag" href="https://fe.disroot.org/tag/guile" rel="nofollow noopener noreferrer" target="_blank">#Guile</a> <a class="hashtag" href="https://fe.disroot.org/tag/compilers" rel="nofollow noopener noreferrer" target="_blank">#Compilers</a> <a class="hashtag" href="https://fe.disroot.org/tag/programminglanguages" rel="nofollow noopener noreferrer" target="_blank">#ProgrammingLanguages</a> <a class="hashtag" href="https://fe.disroot.org/tag/plt" rel="nofollow noopener noreferrer" target="_blank">#PLT</a></p>
Ramin HonaryThe <a class="hashtag" href="https://fe.disroot.org/tag/guix" rel="nofollow noopener noreferrer" target="_blank">#Guix</a> user survey results have been published<p><a href="https://guix.gnu.org/en/blog/2025/guix-user-and-contributor-survey-2024-the-results-part-1/" rel="nofollow noopener noreferrer" target="_blank">https://guix.gnu.org/en/blog/2025/guix-user-and-contributor-survey-2024-the-results-part-1/</a></p><p>Comment about it on fedi social media here:</p><p><a href="https://social.sciences.re/@zimoun/113837703409145679" rel="nofollow noopener noreferrer" target="_blank">https://social.sciences.re/@zimoun/113837703409145679</a></p><p><a class="hashtag" href="https://fe.disroot.org/tag/tech" rel="nofollow noopener noreferrer" target="_blank">#tech</a> <a class="hashtag" href="https://fe.disroot.org/tag/software" rel="nofollow noopener noreferrer" target="_blank">#software</a> <a class="hashtag" href="https://fe.disroot.org/tag/linux" rel="nofollow noopener noreferrer" target="_blank">#Linux</a> <a class="hashtag" href="https://fe.disroot.org/tag/gnu" rel="nofollow noopener noreferrer" target="_blank">#GNU</a> <a class="hashtag" href="https://fe.disroot.org/tag/guix" rel="nofollow noopener noreferrer" target="_blank">#Guix</a> <a class="hashtag" href="https://fe.disroot.org/tag/guixos" rel="nofollow noopener noreferrer" target="_blank">#GuixOS</a> <a class="hashtag" href="https://fe.disroot.org/tag/schemelang" rel="nofollow noopener noreferrer" target="_blank">#SchemeLang</a> <a class="hashtag" href="https://fe.disroot.org/tag/guile" rel="nofollow noopener noreferrer" target="_blank">#Guile</a> <a class="hashtag" href="https://fe.disroot.org/tag/scheme" rel="nofollow noopener noreferrer" target="_blank">#Scheme</a></p>
Ramin Honary<blockquote><p>me, scoffing: dude there’s like a million of those. what, does yours compile on a pregnancy test?</p></blockquote><p><span class="h-card"><a class="u-url mention" href="https://friend.camp/@garbados" rel="nofollow noopener noreferrer" target="_blank">@<span>garbados</span></a></span> I can’t find it now, but someone apparently wrote a <a class="hashtag" href="https://fe.disroot.org/tag/schemelang" rel="nofollow noopener noreferrer" target="_blank">#SchemeLang</a> that compiles to Ethereum smart contracts. Being that it runs on the cryptocurrency blockchain, they called it “Pyramid Scheme.” It may have been a joke, but I think someone actually did that.</p><p>I have challenged myself to try to get my <a href="https://codeberg.org/ramin_hal9001/gypsum%20" rel="nofollow noopener noreferrer" target="_blank">large Scheme code base</a> to compile on any <a class="hashtag" href="https://fe.disroot.org/tag/scheme" rel="nofollow noopener noreferrer" target="_blank">#Scheme</a> I can find that claims to conform to the <a class="hashtag" href="https://fe.disroot.org/tag/r7rs" rel="nofollow noopener noreferrer" target="_blank">#R7RS</a> standard. So far I can get a significant portion of it to compile on <a class="hashtag" href="https://fe.disroot.org/tag/guile" rel="nofollow noopener noreferrer" target="_blank">#Guile</a> (reference), Gambit, MIT Scheme, <a class="hashtag" href="https://fe.disroot.org/tag/gauche" rel="nofollow noopener noreferrer" target="_blank">#Gauche</a>, and Chibi. I hope I can get it to build on Chez with the <a class="hashtag" href="https://fe.disroot.org/tag/r7rs" rel="nofollow noopener noreferrer" target="_blank">#R7RS</a> compatability layer built-in to the <em><a href="https://snow-fort.org%20" rel="nofollow noopener noreferrer" target="_blank">Snow Fort</a></em> package manager.</p>
Ramin HonaryIf you want to learn Gtk programming<p>No matter what language you want to use to program your Gtk app, read <a href="https://python-gtk-3-tutorial.readthedocs.io/en/latest/%20" rel="nofollow noopener noreferrer" target="_blank">the Python tutorial</a> to get started, <strong>even if you are not going to write your app in Python.</strong></p><p>So far it has been the most comprehensive and well-written tutorials I have ever seen for Gtk, and explains important concepts even better than the official documentation does. What applies to Gtk programming Python applies to most any other programming language as well, especially scripting languages, so what you learn from this tutorial will apply to your use case as well.</p><p>Gtk is a cross-platform GUI toolkit that serves as infrastructure for Linux/BSDUnix desktop environments like Gnome, Cinnamon, MATE, and Xfce. Gtk apps can build and run on Mac OS and Windows without too much difficulty. Though Gtk is written in C it supports very a wide range of programming languages for application programming such as Python, JavaScript, Ruby, Lua, most of Lisp the Lisp family, Java, Vala, C#, even C++ if you are a masochist. Because of this, it never occurred to me that if I wanted to learn more about Gtk programming, I should read a tutorial for one specific language (Python). Now that I have read it, I wish I had known this sooner, so I am telling everyone here on the fediverse.</p><p><strong>EDIT:</strong> I forgot to mention, you can download the entire tutorial locally as <a href="https://python-gtk-3-tutorial.readthedocs.io/_/downloads/en/latest/htmlzip/%20" rel="nofollow noopener noreferrer" target="_blank">HTML</a>, <a href="https://python-gtk-3-tutorial.readthedocs.io/_/downloads/en/latest/pdf/%20" rel="nofollow noopener noreferrer" target="_blank">PDF</a>, or <a href="https://python-gtk-3-tutorial.readthedocs.io/_/downloads/en/latest/epub/%20" rel="nofollow noopener noreferrer" target="_blank">EPUB</a> so that you can hack offline as well!</p><p><a class="hashtag" href="https://fe.disroot.org/tag/tech" rel="nofollow noopener noreferrer" target="_blank">#tech</a> <a class="hashtag" href="https://fe.disroot.org/tag/software" rel="nofollow noopener noreferrer" target="_blank">#software</a> <a class="hashtag" href="https://fe.disroot.org/tag/linux" rel="nofollow noopener noreferrer" target="_blank">#Linux</a> <a class="hashtag" href="https://fe.disroot.org/tag/freebsd" rel="nofollow noopener noreferrer" target="_blank">#FreeBSD</a> <a class="hashtag" href="https://fe.disroot.org/tag/openbsd" rel="nofollow noopener noreferrer" target="_blank">#OpenBSD</a> <a class="hashtag" href="https://fe.disroot.org/tag/netbsd" rel="nofollow noopener noreferrer" target="_blank">#NetBSD</a> <a class="hashtag" href="https://fe.disroot.org/tag/gtk" rel="nofollow noopener noreferrer" target="_blank">#Gtk</a> <a class="hashtag" href="https://fe.disroot.org/tag/gui" rel="nofollow noopener noreferrer" target="_blank">#GUI</a> <a class="hashtag" href="https://fe.disroot.org/tag/appdev" rel="nofollow noopener noreferrer" target="_blank">#AppDev</a> <a class="hashtag" href="https://fe.disroot.org/tag/nativeapp" rel="nofollow noopener noreferrer" target="_blank">#NativeApp</a> <a class="hashtag" href="https://fe.disroot.org/tag/nativeappdev" rel="nofollow noopener noreferrer" target="_blank">#NativeAppDev</a> <a class="hashtag" href="https://fe.disroot.org/tag/gnomede" rel="nofollow noopener noreferrer" target="_blank">#GnomeDE</a> <a class="hashtag" href="https://fe.disroot.org/tag/matede" rel="nofollow noopener noreferrer" target="_blank">#MateDE</a> <a class="hashtag" href="https://fe.disroot.org/tag/cinnamonde" rel="nofollow noopener noreferrer" target="_blank">#CinnamonDE</a> <a class="hashtag" href="https://fe.disroot.org/tag/xfce" rel="nofollow noopener noreferrer" target="_blank">#Xfce</a> <a class="hashtag" href="https://fe.disroot.org/tag/python" rel="nofollow noopener noreferrer" target="_blank">#Python</a> <a class="hashtag" href="https://fe.disroot.org/tag/lua" rel="nofollow noopener noreferrer" target="_blank">#Lua</a> <a class="hashtag" href="https://fe.disroot.org/tag/lisp" rel="nofollow noopener noreferrer" target="_blank">#Lisp</a> <a class="hashtag" href="https://fe.disroot.org/tag/javascript" rel="nofollow noopener noreferrer" target="_blank">#JavaScript</a> <a class="hashtag" href="https://fe.disroot.org/tag/ruby" rel="nofollow noopener noreferrer" target="_blank">#Ruby</a> <a class="hashtag" href="https://fe.disroot.org/tag/lua" rel="nofollow noopener noreferrer" target="_blank">#Lua</a> <a class="hashtag" href="https://fe.disroot.org/tag/java" rel="nofollow noopener noreferrer" target="_blank">#Java</a> <a class="hashtag" href="https://fe.disroot.org/tag/valalang" rel="nofollow noopener noreferrer" target="_blank">#ValaLang</a> <a class="hashtag" href="https://fe.disroot.org/tag/schemelang" rel="nofollow noopener noreferrer" target="_blank">#SchemeLang</a> <a class="hashtag" href="https://fe.disroot.org/tag/cplusplus" rel="nofollow noopener noreferrer" target="_blank">#CPlusPlus</a> <a class="hashtag" href="https://fe.disroot.org/tag/gcc" rel="nofollow noopener noreferrer" target="_blank">#GCC</a> <a class="hashtag" href="https://fe.disroot.org/tag/macos" rel="nofollow noopener noreferrer" target="_blank">#MacOS</a> <a class="hashtag" href="https://fe.disroot.org/tag/mswindows" rel="nofollow noopener noreferrer" target="_blank">#MSWindows</a></p>
Ramin Honary<p><a class="hashtag" href="https://fe.disroot.org/tag/schemelang" rel="nofollow noopener noreferrer" target="_blank">#SchemeLang</a> (the Scheme programming language) is <strong>not</strong> a mainstream language, and there are a lot of drawbacks to this, mostly involving a lack of resources for everything from documentation and tutorials, to libraries and tooling. It just doesn’t have enough of an “online presence” for it to be easier to learn and use, and it is hard to find people whom you can ask questions about it. On the other hand, virtual communities form around programming languages, including <a class="hashtag" href="https://fe.disroot.org/tag/scheme" rel="nofollow noopener noreferrer" target="_blank">#Scheme</a> , and the fact that it is not used very often in commercial projects makes the Scheme community a very close-knit one.</p><p>It also lets you see what the world might be like without Silicon Valley tech bro culture or venture capital’s innate drive toward enshittification of everything affecting every aspect of the community around this programming language. You can find libraries of code that haven’t been updated in a decade that still work fine today. When you find a tutorial or documentation, it is not usually AI slop, or search-engine optimized clickbait, or only available behind paywalls on sites that still serve you ads after you have a subscription, or YouTube videos (if there are any) explaining the basics of how to use it interrupted every 5 minutes by the presenter doing an ad for their sponsors.</p><p>I especially like the fact that every last library or framework <strong>does not</strong> have a cute logo, or it’s own domain name, or a website in which the content is 98% marketing jargon and 2% documentation and tutorials. If <a class="hashtag" href="https://fe.disroot.org/tag/scheme" rel="nofollow noopener noreferrer" target="_blank">#Scheme</a> ever goes mainstream, I am going to miss this aspect of it.</p>
Ramin Honary<blockquote><p>what are the differences between resurrected GuileEmacs that was also announced in EmacsConf2024 and Gypsum? At first glance seems like both projects have the same goal.</p></blockquote><p><span class="h-card"><a class="u-url mention" href="https://functional.cafe/@ram535" rel="nofollow noopener noreferrer" target="_blank">@<span>ram535</span></a></span> thanks for asking! The goal for both projects are similar, but they are achieved in slightly different ways.</p><p>Gypsum is a clone written in Scheme, meaning it is software the behaves exactly like Emacs, but it is written from scratch in a new code base. In this case, it is also being written in a completely different programming language, Scheme instead of C. The larger goal is to have an Emacs that is backward compatible with GNU Emacs but is written in Scheme that runs on any R7RS standard compliant Scheme implementation. There is no C code in this project at all, it is purely Scheme. I would like to also target other compilers such as MIT Scheme, Gambit, Stklos, and possibly Chicken and Larceny as well, though this will be pretty difficult and rely on a lot of <code>cond-expand</code> code. The larger goal is to have an Emacs app platform that encourages the use of the Scheme language for creating applications and text editing work flows, regardless of the underlying compiler.</p><p><span class="h-card"><a class="u-url mention" href="https://octodon.social/@lispwitch" rel="nofollow noopener noreferrer" target="_blank">@<span>lispwitch</span></a></span> ‘s “GuileEmacs” is not a clone, but a fork of both GNU Emacs and GNU Guile, meaning it modifies the existing GNU Emacs code base and some of the Guile source base, replacing some of the C source code in GNU Emacs with other C source code from Guile. Then, the Emacs Lisp interpreter written in C is replaced with an Emacs Lisp interpreter written in Guile Scheme. This allows Emacs Lisp to be JIT compiled using Guile’s JIT compiler, and also make use of all of the Guile software ecosystem to extend Emacs. This is incredibly useful, because there is quite a lot of Guile software, including things like web servers and game engines, and soon it could all be available for use by Emacs programmers. It will probably also be production ready much sooner than my Gypsum project because it only needs to implement the core of Emacs Lisp to work. However, it relies on language features specific to Guile to achieve this, so it is not fully R7RS standards compliant, and will not work on other Scheme implementations.</p><p><a class="hashtag" href="https://fe.disroot.org/tag/tech" rel="nofollow noopener noreferrer" target="_blank">#tech</a> <a class="hashtag" href="https://fe.disroot.org/tag/software" rel="nofollow noopener noreferrer" target="_blank">#software</a> <a class="hashtag" href="https://fe.disroot.org/tag/emacs" rel="nofollow noopener noreferrer" target="_blank">#Emacs</a> <a class="hashtag" href="https://fe.disroot.org/tag/schemelang" rel="nofollow noopener noreferrer" target="_blank">#SchemeLang</a> <a class="hashtag" href="https://fe.disroot.org/tag/scheme" rel="nofollow noopener noreferrer" target="_blank">#Scheme</a> <a class="hashtag" href="https://fe.disroot.org/tag/r7rs" rel="nofollow noopener noreferrer" target="_blank">#R7RS</a> <a class="hashtag" href="https://fe.disroot.org/tag/guile" rel="nofollow noopener noreferrer" target="_blank">#Guile</a> <a class="hashtag" href="https://fe.disroot.org/tag/guileemacs" rel="nofollow noopener noreferrer" target="_blank">#GuileEmacs</a> <a class="hashtag" href="https://fe.disroot.org/tag/guilescheme" rel="nofollow noopener noreferrer" target="_blank">#GuileScheme</a></p>
Ramin Honary<p>The parent of this post is my talk at EmacsConf2024 on PeerTube. If you reply to this post here (not the parent), I can see comments on the video and reply to them.</p><p><a class="hashtag" href="https://fe.disroot.org/tag/tech" rel="nofollow noopener noreferrer" target="_blank">#tech</a> <a class="hashtag" href="https://fe.disroot.org/tag/software" rel="nofollow noopener noreferrer" target="_blank">#software</a> <a class="hashtag" href="https://fe.disroot.org/tag/emacsconf2024" rel="nofollow noopener noreferrer" target="_blank">#EmacsConf2024</a> <a class="hashtag" href="https://fe.disroot.org/tag/emacsconf" rel="nofollow noopener noreferrer" target="_blank">#EmacsConf</a> <a class="hashtag" href="https://fe.disroot.org/tag/emacs" rel="nofollow noopener noreferrer" target="_blank">#Emacs</a> <a class="hashtag" href="https://fe.disroot.org/tag/scheme" rel="nofollow noopener noreferrer" target="_blank">#Scheme</a> <a class="hashtag" href="https://fe.disroot.org/tag/schemelang" rel="nofollow noopener noreferrer" target="_blank">#SchemeLang</a></p>
Ramin HonaryI tried using Marc Nieper-Wißkirchen’s Scheme pattern matcher <p>It’s called <a href="https://snow-fort.org/s/rapid-scheme.org/marc/rapid/match/0.1.5/index.html%20" rel="nofollow noopener noreferrer" target="_blank"><code>(rapid match)</code></a>, and it is part of the “Rapid Scheme” compiler project, which is a Scheme compiler written in portable, standards-compliant R7RS “small” Scheme.</p><p>It is <em>tiny,</em> only 300 lines of code, and compiles almost instantly. But it lacks features that other pattern matchers might have, especially matching on record data types, becuase the R7RS “small” standard does not provide any mechanism for introspection of record data. Also it cannot assign a whole pattern to a single variable, you can only match variables to elements inside of the pattern, which is unfortunate.</p><p>But it is efficient, and it gets the job done. It will probably cover 80% of all use cases. It’s best features are portability and it’s small footprint. I have decided to use it in my <a href="https://codeberg.org/ramin_hal9001/gypsum%20" rel="nofollow noopener noreferrer" target="_blank">Gypsum</a> software.</p><p>I also discovered that unfortunately Guile Scheme does not fully implement the R7RS standard for library definitions, it is missing the <code>(export (rename from-sym to-sym))</code> declaration syntax. But I was able to work around it and get <code>(rapid match)</code> to build on Guile.</p><p><a class="hashtag" href="https://fe.disroot.org/tag/tech" rel="nofollow noopener noreferrer" target="_blank">#tech</a> <a class="hashtag" href="https://fe.disroot.org/tag/software" rel="nofollow noopener noreferrer" target="_blank">#software</a> <a class="hashtag" href="https://fe.disroot.org/tag/schemelang" rel="nofollow noopener noreferrer" target="_blank">#SchemeLang</a> <a class="hashtag" href="https://fe.disroot.org/tag/scheme" rel="nofollow noopener noreferrer" target="_blank">#Scheme</a> <a class="hashtag" href="https://fe.disroot.org/tag/r7rs" rel="nofollow noopener noreferrer" target="_blank">#R7RS</a> <a class="hashtag" href="https://fe.disroot.org/tag/guilescheme" rel="nofollow noopener noreferrer" target="_blank">#GuileScheme</a> <a class="hashtag" href="https://fe.disroot.org/tag/guile" rel="nofollow noopener noreferrer" target="_blank">#Guile</a> <a class="hashtag" href="https://fe.disroot.org/tag/functionalprogramming" rel="nofollow noopener noreferrer" target="_blank">#FunctionalProgramming</a> <a class="hashtag" href="https://fe.disroot.org/tag/patternmatching" rel="nofollow noopener noreferrer" target="_blank">#PatternMatching</a></p>
Ramin HonaryI am presenting for <a class="hashtag" href="https://fe.disroot.org/tag/emacsconf2024" rel="nofollow noopener noreferrer" target="_blank">#EmacsConf2024</a><p>The presentation is live now, and I am available for questions in the “Big Blue Button” chat room. Feel free to ask me questions here on ActivityPub.</p><ul><li><strong>Stream URL:</strong> <a href="https://live0.emacsconf.org/dev.webm" rel="nofollow noopener noreferrer" target="_blank">https://live0.emacsconf.org/dev.webm</a></li><li><strong>Presentation page:</strong> <a href="https://emacsconf.org/2024/talks/gypsum/" rel="nofollow noopener noreferrer" target="_blank">https://emacsconf.org/2024/talks/gypsum/</a></li><li><strong>Chat room:</strong> <a href="https://bbb.emacsverse.org/rooms/uqn-ewi-54c-roh/join" rel="nofollow noopener noreferrer" target="_blank">https://bbb.emacsverse.org/rooms/uqn-ewi-54c-roh/join</a></li></ul><p>The project is an implementation of <a class="hashtag" href="https://fe.disroot.org/tag/emacslisp" rel="nofollow noopener noreferrer" target="_blank">#EmacsLisp</a> written in portable <a class="hashtag" href="https://fe.disroot.org/tag/r7rs" rel="nofollow noopener noreferrer" target="_blank">#R7RS</a> standard <a class="hashtag" href="https://fe.disroot.org/tag/scheme" rel="nofollow noopener noreferrer" target="_blank">#Scheme</a> programming language. The reference implementation is written in <a class="hashtag" href="https://fe.disroot.org/tag/guilescheme" rel="nofollow noopener noreferrer" target="_blank">#GuileScheme</a></p><p><a class="hashtag" href="https://fe.disroot.org/tag/tech" rel="nofollow noopener noreferrer" target="_blank">#tech</a> <a class="hashtag" href="https://fe.disroot.org/tag/software" rel="nofollow noopener noreferrer" target="_blank">#software</a> <a class="hashtag" href="https://fe.disroot.org/tag/emacs" rel="nofollow noopener noreferrer" target="_blank">#Emacs</a> <a class="hashtag" href="https://fe.disroot.org/tag/emacsconf" rel="nofollow noopener noreferrer" target="_blank">#EmacsConf</a> <a class="hashtag" href="https://fe.disroot.org/tag/schemelang" rel="nofollow noopener noreferrer" target="_blank">#SchemeLang</a> <a class="hashtag" href="https://fe.disroot.org/tag/guile" rel="nofollow noopener noreferrer" target="_blank">#Guile</a></p>
Ramin Honary<p><span class="h-card"><a class="u-url mention" href="https://fosstodon.org/@daviwil" rel="nofollow noopener noreferrer" target="_blank">@<span>daviwil</span></a></span> hey, thanks for mentioning my talk in your latest live stream! (I watched it but wasn’t able to comment in the chat.) I hope I can answer everyone’s questions tomorrow when my presentation goes live. I haven’t made as much progress on my “Gypsum” project as I had hoped, but I think I have a solid foundation on which we (me and anyone who wants to contribute) can build.</p><p>I am also really looking forward to <span class="h-card"><a class="u-url mention" href="https://octodon.social/@lispwitch" rel="nofollow noopener noreferrer" target="_blank">@<span>lispwitch</span></a></span> presentation.</p><p>It was nice to see <span class="h-card"><a class="u-url mention" href="https://social.coop/@cwebber" rel="nofollow noopener noreferrer" target="_blank">@<span>cwebber</span></a></span> and <span class="h-card"><a class="u-url mention" href="https://chaos.social/@dpk" rel="nofollow noopener noreferrer" target="_blank">@<span>dpk</span></a></span> there as well.</p><p><a href="https://www.youtube.com/watch?v=RsW7PWhS_vg" rel="nofollow noopener noreferrer" target="_blank">https://www.youtube.com/watch?v=RsW7PWhS_vg</a></p><p><a class="hashtag" href="https://fe.disroot.org/tag/software" rel="nofollow noopener noreferrer" target="_blank">#software</a> <a class="hashtag" href="https://fe.disroot.org/tag/programming" rel="nofollow noopener noreferrer" target="_blank">#programming</a> <a class="hashtag" href="https://fe.disroot.org/tag/tech" rel="nofollow noopener noreferrer" target="_blank">#tech</a> <a class="hashtag" href="https://fe.disroot.org/tag/schemelang" rel="nofollow noopener noreferrer" target="_blank">#SchemeLang</a> <a class="hashtag" href="https://fe.disroot.org/tag/emacs" rel="nofollow noopener noreferrer" target="_blank">#Emacs</a> <a class="hashtag" href="https://fe.disroot.org/tag/emacsconf2024" rel="nofollow noopener noreferrer" target="_blank">#EmacsConf2024</a> <a class="hashtag" href="https://fe.disroot.org/tag/systemcrafters" rel="nofollow noopener noreferrer" target="_blank">#SystemCrafters</a> <a class="hashtag" href="https://fe.disroot.org/tag/scheme" rel="nofollow noopener noreferrer" target="_blank">#Scheme</a> <a class="hashtag" href="https://fe.disroot.org/tag/r7rs" rel="nofollow noopener noreferrer" target="_blank">#R7RS</a></p>
Ramin Honary<a href="https://tilde.town/~ramin_hal9001/articles/scheme-monads.html%20" rel="nofollow noopener noreferrer" target="_blank">Monadic programming in R7RS Scheme</a><p>This is my article on how to solve practical programming problems in the Scheme language using monads, a concept originally introduced to the world of software engineering by the Haskell programming language. Because the Scheme language is not purely a Lambda Calculus computer the way Haskell is, and does not do static type checking, monads are not as necessary to Scheme programmers as they are to Haskell programmers, but can still come in handy.</p><p>Monads let you code procedures (without using macros) that do not use strictly procedural programming semantics. They let you model alternative semantics like concurrent programming, or lazy evaluation. I go over two examples: of a procedural but monadic pretty printer, and list monad implementation which demonstrate a simple concurrent programming semantics.</p><p><a href="https://tilde.town/~ramin_hal9001/articles/scheme-monads.html" rel="nofollow noopener noreferrer" target="_blank">https://tilde.town/~ramin_hal9001/articles/scheme-monads.html</a></p><p><a class="hashtag" href="https://fe.disroot.org/tag/software" rel="nofollow noopener noreferrer" target="_blank">#software</a> <a class="hashtag" href="https://fe.disroot.org/tag/computers" rel="nofollow noopener noreferrer" target="_blank">#computers</a> <a class="hashtag" href="https://fe.disroot.org/tag/programminglanguage" rel="nofollow noopener noreferrer" target="_blank">#ProgrammingLanguage</a> <a class="hashtag" href="https://fe.disroot.org/tag/scheme" rel="nofollow noopener noreferrer" target="_blank">#Scheme</a> <a class="hashtag" href="https://fe.disroot.org/tag/schemelang" rel="nofollow noopener noreferrer" target="_blank">#SchemeLang</a> <a class="hashtag" href="https://fe.disroot.org/tag/monads" rel="nofollow noopener noreferrer" target="_blank">#Monads</a> <a class="hashtag" href="https://fe.disroot.org/tag/haskell" rel="nofollow noopener noreferrer" target="_blank">#Haskell</a> <a class="hashtag" href="https://fe.disroot.org/tag/haskelllang" rel="nofollow noopener noreferrer" target="_blank">#HaskellLang</a> <a class="hashtag" href="https://fe.disroot.org/tag/lisp" rel="nofollow noopener noreferrer" target="_blank">#Lisp</a></p>
Ramin Honary<blockquote><p>“Question for lispers with experience: If you should start to learn a LISP style language today, which one do you pick up? Why?”</p></blockquote><p><span class="h-card"><a class="u-url mention" href="https://mastodon.sdf.org/@syntaxerror" rel="nofollow noopener noreferrer" target="_blank">@<span>syntaxerror</span></a></span> The <a href="https://r7rs.org/%20" rel="nofollow noopener noreferrer" target="_blank">R7RS “Small” Scheme standard</a> is roughly 80 pages, so you can learn about all of the language features very quickly. I love it because of it’s minimalism, it is my preferred language.</p><p>My take on it is that the “Small” Scheme standard is perfectly designed to construct larger programming languages with more features. One such language is R7RS “Large” Scheme, but you could theoretically use it to implement Common Lisp, Python, JavaScript, or any other language.</p><p>The R7RS “Large” standard is still being discussed (10 years after “small” was ratified), but it relies heavily on the “<a href="https://srfi.schemers.org%20" rel="nofollow noopener noreferrer" target="_blank">Scheme Request For Implementation</a>“ (SRFI) process to fill out features. The larger portion of the R7RS “Large” standard is already ratified and published, so it is still useful even though it is not complete.</p><p>There are many Scheme implementations, but I recommend <a href="https://www.gnu.org/software/guile/%20" rel="nofollow noopener noreferrer" target="_blank">Guile</a>, as it is almost completely R7RS-Small compliant, and has a ton of other useful features that come with it out of the box. So if you need, for example, a quick web server, or a way to search your filesystem, Guile has modules for that.</p><p>Another good batteries-included Lisp is <a href="https://racket-lang.org/%20" rel="nofollow noopener noreferrer" target="_blank">Racket</a>, which is a larger language built on top of Chez Scheme (an R6RS Standard Scheme implementation). You can easily install the R7RS Scheme language pack on Racket and write your code in Scheme as you read through the R7RS standard document.</p><p>Both Guile and Racket/CS (Chez Scheme) not only have many useful features, but compile to binary code that runs extremely fast for a high-level language.</p><p>Also, if you haven’t already, try to learn to use Emacs.</p><p><a class="hashtag" href="https://fe.disroot.org/tag/tech" rel="nofollow noopener noreferrer" target="_blank">#tech</a> <a class="hashtag" href="https://fe.disroot.org/tag/software" rel="nofollow noopener noreferrer" target="_blank">#software</a> <a class="hashtag" href="https://fe.disroot.org/tag/lisp" rel="nofollow noopener noreferrer" target="_blank">#Lisp</a> <a class="hashtag" href="https://fe.disroot.org/tag/commonlisp" rel="nofollow noopener noreferrer" target="_blank">#CommonLisp</a> <a class="hashtag" href="https://fe.disroot.org/tag/scheme" rel="nofollow noopener noreferrer" target="_blank">#Scheme</a> <a class="hashtag" href="https://fe.disroot.org/tag/schemelang" rel="nofollow noopener noreferrer" target="_blank">#SchemeLang</a> <a class="hashtag" href="https://fe.disroot.org/tag/r7rs" rel="nofollow noopener noreferrer" target="_blank">#R7RS</a> <a class="hashtag" href="https://fe.disroot.org/tag/emacs" rel="nofollow noopener noreferrer" target="_blank">#Emacs</a> <a class="hashtag" href="https://fe.disroot.org/tag/guilescheme" rel="nofollow noopener noreferrer" target="_blank">#GuileScheme</a> <a class="hashtag" href="https://fe.disroot.org/tag/racketlang" rel="nofollow noopener noreferrer" target="_blank">#RacketLang</a></p>
Ramin HonaryAnnouncing: <a href="https://codeberg.org/ramin_hal9001/gypsum-lens%20" rel="nofollow noopener noreferrer" target="_blank">Functional Lenses library</a> for <a class="hashtag" href="https://fe.disroot.org/tag/r7rs" rel="nofollow noopener noreferrer" target="_blank">#R7RS</a> <a class="hashtag" href="https://fe.disroot.org/tag/scheme" rel="nofollow noopener noreferrer" target="_blank">#Scheme</a><p>Although I have gone out of my way to make this library portable R7RS, it may require a little tweaking to make it work on your Scheme implementation. I have tested it on <a class="hashtag" href="https://fe.disroot.org/tag/guile" rel="nofollow noopener noreferrer" target="_blank">#Guile</a> , Gambit, <a class="hashtag" href="https://fe.disroot.org/tag/stklos" rel="nofollow noopener noreferrer" target="_blank">#Stklos</a> , and MIT/GNU Scheme. Only Guile passes all tests.</p><p><a class="hashtag" href="https://fe.disroot.org/tag/tech" rel="nofollow noopener noreferrer" target="_blank">#tech</a> <a class="hashtag" href="https://fe.disroot.org/tag/software" rel="nofollow noopener noreferrer" target="_blank">#software</a> <a class="hashtag" href="https://fe.disroot.org/tag/lisp" rel="nofollow noopener noreferrer" target="_blank">#Lisp</a> <a class="hashtag" href="https://fe.disroot.org/tag/programminglanguage" rel="nofollow noopener noreferrer" target="_blank">#ProgrammingLanguage</a> <a class="hashtag" href="https://fe.disroot.org/tag/schemelang" rel="nofollow noopener noreferrer" target="_blank">#SchemeLang</a></p>
Ramin Honary<p><a href="https://www.burgerrg.com/TR413.pdf%20" rel="nofollow noopener noreferrer" target="_blank">1994 Indiana U., Robert G. Berger: “The Scheme Machine”</a></p><blockquote><p>This paper describes the design and implementation of the Scheme Machine, a symbolic computer derived from an abstract Scheme interpreter. The derivation is performed in several transformation passes. First, the interpreter is factored into a compiler and an abstract CPU. Next, the CPU specification is refined so that it can be used with the Digital Design Derivation system. Finally, the DDD system assists in the transformation into hardware. The resulting CPU, implemented in field programmable gate arrays and PALs, is interfaced to a garbage-collecting heap to form a complete Scheme system.</p></blockquote><p><a class="hashtag" href="https://fe.disroot.org/tag/scheme" rel="nofollow noopener noreferrer" target="_blank">#Scheme</a> <a class="hashtag" href="https://fe.disroot.org/tag/schemelang" rel="nofollow noopener noreferrer" target="_blank">#SchemeLang</a> <a class="hashtag" href="https://fe.disroot.org/tag/lispm" rel="nofollow noopener noreferrer" target="_blank">#LispM</a> <a class="hashtag" href="https://fe.disroot.org/tag/lispmachine" rel="nofollow noopener noreferrer" target="_blank">#LispMachine</a></p>