July 13th, 2024

Pseudo Scheme: Scheme Implemented on Top of Common Lisp

The Pseudo Scheme, created by Jonathan Rees, is an implementation of Scheme on Common Lisp. It follows IEEE and Revised^4 Scheme standards, offers a high-level macro facility, and allows seamless interaction between Scheme and Common Lisp programs. It can be easily ported to different Lisp environments and is available for use, copying, and distribution. Join a mailing list for updates.

Read original articleLink Icon
Pseudo Scheme: Scheme Implemented on Top of Common Lisp

The Pseudo Scheme is an implementation of Scheme programming language on top of Common Lisp. It functions by processing Scheme code through a preprocessor to generate Common Lisp code, allowing seamless interaction between Scheme and Common Lisp programs. While lacking full support for first-class continuations and having partial backing for tail recursion and the number system, it diligently adheres to IEEE and Revised^4 Scheme standards. Additionally, it offers a "hygienic" high-level macro facility. PseudoScheme, created by Jonathan Rees, is available for various Lisp environments and can be easily ported to others. The software is copyrighted by Jonathan Rees, permitting use, copying, and distribution. Interested individuals can join a mailing list for announcements related to PseudoScheme.

Related

The Pre-Scheme Restoration

The Pre-Scheme Restoration

The Pre-Scheme Restoration project, funded by NLnet foundation, aims to modernize the Pre-Scheme compiler, a subset of Scheme, for a new functional programming language. Led by Andrew Whatson, the project focuses on compatibility, tooling, and documentation.

Picolisp a Railroad Simulation

Picolisp a Railroad Simulation

A railroad simulation in PicoLisp uses Discrete Event Simulation (DES) to model trains as bots moving between stations, changing tracks, and shunting. Users control the simulation through logic and network layout files.

PARI/GP computer algebra system

PARI/GP computer algebra system

PARI/GP is a versatile open-source computer algebra system for number theory and mathematical computations. It offers a wide range of functions, a C library for speed, an interactive shell, and a GP scripting language. Recent updates include versions 2.15.5 and 2.16.1 (alpha). The system received the 2021 Richard D. Jenks Memorial Prize and a new book on numerical algorithms was released, showcasing its ongoing development.

Ur-Scheme: A GPL self-hosting compiler from a subset of R5RS Scheme

Ur-Scheme: A GPL self-hosting compiler from a subset of R5RS Scheme

Ur-Scheme is a compact GPL compiler translating R5RS Scheme to Linux x86 assembly. Despite limitations, it offers speed, safety, and unique extensions. Inspired by Ghuloum, it simplifies compiler construction.

Bio – experimental Lisp dialect, written in Zig

Bio – experimental Lisp dialect, written in Zig

Bio is an experimental Lisp dialect on GitHub, featuring macros, garbage collection, and lambda expressions. Documentation is ongoing, with examples in `std.lisp` and `test.lisp`. Explore for more details.

Link Icon 6 comments
By @ReleaseCandidat - 9 months
Like almost always, there are chapters about that in PAIP:

22 Scheme: An Uncommon Lisp[what a pun!] https://github.com/norvig/paip-lisp/blob/main/docs/chapter22...

23 Compiling Lisp [Scheme] https://github.com/norvig/paip-lisp/blob/main/docs/chapter23...

By @Zambyte - 9 months
I feel like one of the major benefits of using Scheme is how easy it is to interoperate with just about any environment. Want to embed Scheme in your C application? Take your pick from GNU Guile, Chibi, Gambit, or Chicken. How about the JVM? Kawa is solid, option. .NET? IronScheme has got you covered. Javascript? There is LIPS or BiwaScheme.
By @wavemode - 9 months
I've sometimes done the opposite - when working in scheme/racket, searched for implementations of things like loop, defmacro or tagbody. (They have their quirks, but when they're a good fit for a problem they can save a lot of typing.)
By @bandrami - 9 months
I'm curious how it handles call/cc. I at least think you would have to make your own continuation stack, unless there's some way to get at the internals of unwind-protect that would make doing it natively possible.
By @wdkrnls - 9 months
Has someone ported this to Emacs?