LIPS
STklos
Our great sponsors
LIPS | STklos | |
---|---|---|
39 | 7 | |
385 | 64 | |
3.6% | - | |
9.1 | 9.6 | |
12 days ago | 8 days ago | |
JavaScript | C | |
MIT | GNU General Public License v3.0 only |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
LIPS
- LIPS: Powerful Scheme based Lisp interpreter in JavaScript
-
(Learn 'Scheme)
Sweet, I'll have to give that a go :)
Another option in browser land is lips[0], which exclusively targets a js backend.
[0] https://lips.js.org
-
All Web frontend lisp projects
For Scheme implementations there are LIPS and biwascheme. I haven't done more than play around with them, so I can't really give an informed opinion about pros and cons or favorites.
-
Extending a Language — Writing Powerful Macros in Scheme
Your example revealed a bug in my Scheme interpreter. This is an example that fails to match:
-
What other Scheme parser tricks do you know?
In my interpreter, LIPS Scheme, vector literal syntax is created using a syntax extension, a token that is mapped to a function or a macro. So you can use things like this:
-
How to list defined symbols?
I'm not sure about other Scheme interpreters but in my interpreter LIPS Scheme, there is (env) function that returns a list of symbols. You can also access environment objects e.g. (current-environment) return object that is used internally. And you can even access the scope chain because the env object has __parent__ property that returns the parent scope.
-
May I see some of your projects? :)
Few of my Open Source projects: * jQuery terminal * LIPS Scheme * Gaiman * Sysend * Wayne
-
Async / Await in Scheme
(define promise (--> '>(fetch "https://lips.js.org/") (then (lambda (res) (res.text))) (then (lambda (text) (. (text.match #/\s*([^>]+?)\s*<\/h1>/) 1)))))
-
Yes we are men. Men is what we are.
ngl when I first saw the headline my first thought was, “Wait, bring CAR into JavaScript? Make it a Lisp? But hasn't it already been done?”
-
If you were hired to create a new distribution of Lisp, what would you include?
Languages like Biwa Scheme and LIPS Scheme are good for running Scheme in the browser. But I would prefer compiling Scheme code to JavaScript in the server, then serving the compiled JavaScript image to the browser.
STklos
-
Oldest Scheme Implementations
STklos was indeed born in 2001, but it was the successor of Stk, which is much older. Its first release was in 1993. As far as I know, STkos did use code from STk, so I'm not sure one couldn't say it was born in 1993, as "STk".
-
Most readable Scheme implementation
That said, I'd just like to mention that I have made an effort to write internals documentation ( general: "hacking", bytecode: "vm") to STklos. It's an interesting implementation because it's easy to add primitives and change the compiler. The internals of the VM is actually a bit more complex... But it's really interesting code.
- STklos 1.70 was released
-
August 2021 - What are you up to schemers ?
I've been working on enhancing STklos' macro system. The idea is to implement `syntax-case` properly and use it to obtain a better implementation of `syntax-rules` (the one in STklos is quite old and has some issues).
-
STklos 1.60 released
SRFI 143 has already been accepted, and there are recent pull requests for 170, 215, 217! :)
What are some alternatives?
scheme-lsp-server
ribbit - A small and portable Scheme implementation with AOT and incremental compilers that fits in 4K. It supports closures, tail calls, first-class continuations and a REPL.
biwascheme - Scheme interpreter written in JavaScript
guile-gi - Bindings for GObject Introspection and libgirepository for Guile
murex - A smarter shell and scripting environment with advanced features designed for usability, safety and productivity (eg smarter DevOps tooling)
cyclone - :cyclone: A brand-new compiler that allows practical application development using R7RS Scheme. We provide modern features and a stable system capable of generating fast native binaries.
atbswp - A minimalist macro recorder
CSCMIC - Learning to make a Scheme interpreter in C
osmosis-js - JS reference implementation of Osmosis, a JSON data store with peer-to-peer background sync
STk - STk is the ancestor of STklos (https://stklos.net) This repository contains fixes to allow the compilation of 4.0.1 on modern versions of GCC
spleeter-web - Self-hostable web app for isolating the vocal, accompaniment, bass, and drums of any song. Supports Spleeter, D3Net, Demucs, Tasnet, X-UMX. Built with React and Django.
husk-scheme - A full implementation of the Scheme programming language for the Haskell Platform.