Is Hoot right for my project?

I’m building a web application that helps users learn Scheme and use it to build web apps. It uses a blocks-based visual programming UI (think Scratch, App Inventor, or SNAP!) which generates Scheme. One way to think about it is as a playground for users to experiment with Scheme by interacting with the browser.

I’d also like to build the web application using Scheme.

I’m in the process of figuring out which Scheme implementation to use for this. Here are what I believe are the high-level Scheme requirements for this application:

  • It should be able to be used instead of JavaScript in a web app, understanding that there might need to be some bootstrapping using JavaScript
  • Related to the above, it has a reasonably nice way to interact with the browser DOM
  • Has a REPL which could be embedded in a web app and to which it is reasonably easy to send scheme expressions for evaluation

So, my question is: Would Hoot be a good choice as a Scheme to use for this project, given its current status? If not, how close do you think it is? My sense, from reading the docs, blogs and some of the example programs is that most, if not all, of the pieces are in place, but it’s not all that simple to use yet.

Thanks in advance.

-Mark

1 Like

Hi @mark!

Some comments about those three requirements:

To answer your bigger question: Hoot has nearly everything you need, but the Scheme interpreter will take some more development time. How easy it is to use for you depends on what you’re comfortable with. If you’re already comfortable with Guile, it should be fairly easy to get started. Hoot doesn’t rely on any third-party Guile libraries so it’s easy to build from source. We recently had a bunch of people use Hoot for the first time in the most recent Lisp Game Jam and they generally seemed to be able to get started without too much trouble. But yes, it’s not a polished Scheme, yet.

The only other viable option for Scheme on the web I can think of is https://www.biwascheme.org/ which is a Scheme interpreter written in JS. Hoot is an ahead-of-time compiler, so there’s a much greater focus on performance and shipping small binaries. If an interpreter is all you need, then maybe Biwa is sufficient as it has an interface to call JS.

Your project sounds cool and actually overlaps a lot with the kinds of browser programming environments we’re interesting in pursuing, so please share future updates with us or drop a link to the project website!

Thanks so much for your reply, David! I’d love to use Hoot, but without a “real” REPL, or at least eval I think it will be hard to choose Hoot right now. I’ll try to create an abstraction so that I can plug in Hoot once it’s a little more mature.

I know about BiwaScheme and am considering it for the short term. For others who have similar needs as mine, I will point out that Gambit is a feasible choice as well. I also like LIPS, particularly it’s nice support for JS and DOM interoperability, but it doesn’t have tail call optimization (which is a dealbreaker for me) or call/cc.

I’ll keep you posted.

-Mark