9 comments

[ 4.9 ms ] story [ 39.1 ms ] thread
I don't understand.

Why not just use Scheme directly, what's the benefit of porting to Hoot?

Did you click the link? https://gracefulliberty.com/physics/

They are making little web applets demonstrating the physics concepts. You obviously can't do this in pure R6RS/etc., you need to pick some implementation that either has JS/WASM FFI or something built in. Likewise if they were doing this as a desktop application, etc. Pure Scheme can model the physics and return the correct numbers, but you need something more for graphics and interactivity.

Spritely has been going strong for many years. I suppose Hoot was created to make Goblins [0] available to a broader public via wasm, as a reference implementation of CapTP specification [1]. Wonder what the timeline is, if any exists, for getting this protocol at a maturity level where it is attractive to implement as an open standard.

[0] https://spritely.institute/goblins/

[1] https://github.com/ocapn/ocapn/blob/main/draft-specification...

> Lately I've been spending time learning Scheme and using it to implement the concepts I'm learning in my physics classes as time permits.

There is a whole book for that: Learn Physics with Functional Programming A Hands-on Guide to Exploring Physics with Haskell by Scott N. Walck, December 2022, 648 pp. ISBN-13: 9781718501669

There is also SICM [0].

[0]: https://archive.org/details/oapen-20.500.12657-26048

This was a nice little experience report. Most of the deficiencies in Hoot can be blamed on me.

> The error messages can be cryptic.

Apologies! Happy to receive issue reports about specific things that we can prioritize.

> It's even more incredible to know that it's running on a stack the team created themselves, not relying on Emscripten.

Building our own toolchain has proven again and again to have been the right choice. Emscripten would not have been useful for compiling Scheme to Wasm GC. Hoot is one of the few Scheme-to-Wasm implementations that takes advantage of the GC support (and the most mature of them all.)

> My initial understanding of Hoot was that it could compile any Guile program to the Web.

This is indeed the goal. However, that's a big compatibility surface area and we are not there yet. Help wanted! When we reach a critical mass of existing Guile code that "just works" then Hoot will be mature enough to become part of Guile itself as its official Wasm backend.