A pure scheme web programming tool

(goeteia.dev)

86 points | by guenchi 7 hours ago

9 comments

  • trescenzi 5 hours ago
    Hoot[1] already exists and does a very good job of running scheme in web assembly. Everything Spritely is working on is pretty cool.

    1: https://spritely.institute/hoot/

    • davexunit 5 hours ago
      Hoot is also not a 2 day old vibecoded project.
    • guenchi 5 hours ago
      thx good to know
  • compacct27 6 hours ago
    This really gets at the issue with JavaScript in the age of AI: it’s just not a terribly statically verifiable language, and DOM work is incredibly prone to failing silently while the app itself is clearly not working. We’ve had to paper over it with TypeScript and frameworks that impose constraints just to stop several classes of bugs, and even then it doesn’t go terribly well.

    The flip side is that AI is making the underlying code more like a..compilation target? At least in the sense that, yes, as this site mentions, Scheme is ugly to read and would be hell to write the old way, but with the new way..maybe we can try because it would give us what native JavaScript and the latest browser standards never could: reliability

    • rafterydj 5 hours ago
      I don't understand this, if I'm honest. WebAssembly is the compilation target. It's a Scheme compiler for wasm, right? Why is it pretending to be a way to rewrite websites? Wouldn't that be a job for literally any possible language compiled to WebAssembly?

      I read the "Why Scheme?" page and it looked entirely AI generated, inasmuch as the reasoning presented confused me, because it didn't make sense. It references homoiconicity as pretty much the only reason to do this, mentions Lisp once or twice, and then just sort of talks about AI not understanding HTML because it doesn't understand compiling.

      But putting it under the prompt of "must pass compiler" makes an AI exactly as capable at the task of making websites as it is capable at the task of making correct programs in any language - which is to say that it can't be guaranteed. Which in turn puts into the question the whole purpose of this project, and particularly, why Scheme chosen at all? Why not Lisp? Why not C? Or Erlang? Or Clojure?

      • jrapdx3 2 hours ago
        Scheme language is very well-suited for producing websites, I've been doing that for several months with decent results. But unless I missed information, I think you're right that has nothing to do with WebAssembly. However I know Scheme->wasm compilers exist if unsure of their status.

        Of course many languages can be used to create or serve websites. If language doesn't matter, then why not Scheme? It's at least as capable as the languages mentioned. OTOH much less is written about Scheme vs. more "mainstream" languages. Maybe that does make a difference.

      • guenchi 5 hours ago
        the syntax-case marco
    • rixed 2 hours ago

        > it’s just not a terribly statically verifiable language
      
      FYI, neither is scheme.
    • john_minsk 3 hours ago
      I'm learning Clojure and using it in a vibe coding environment. AI hates brackets.
    • shalom1112 5 hours ago
      [dead]
  • bramadityaw 6 hours ago
    I tried to edit the Scheme source but it seems to have a bug where every editing action seems to happen a row above of where the cursor is.
    • golem14 6 hours ago
      same. Chrome on MacOs. But the code can actually compile and run, once you adjust for the cursor positions.
      • guenchi 5 hours ago
        please retry :)
    • guenchi 5 hours ago
      please retry :)
  • papaver-somnamb 3 hours ago
    Bravo! If only Clojure(Script) did this. There is a real need to reduce the size of compiled JS delivered to the browser and eliminate legacy dependency on goog.
  • guenchi 2 hours ago
    38.2 kB / 75ms you have syntax-case in browser
  • koolala 5 hours ago
    Pretty slick it has Three.js built in. I've not sure I've seen that in a language before in the standard library.
    • guenchi 5 hours ago
      it's standard r6rs scheme
  • guenchi 7 hours ago
    1 Self hosting in browser with hygienic macros 2 handle HTML and CSS like Scheme (Expand with macro) 3 Use S-expr to send / receive message with server
    • john_minsk 3 hours ago
      Very cool!

      At the top of the program you import Web Libraries. is it some standard Scheme web framework that you're using?

      * ;; re-running this source bumps the generation; the old loop sees it ;; and lets go (js-eval "globalThis.__hero_gen = (globalThis.__hero_gen || 0) + 1") (define gen (js->number (js-get (js-global) "__hero_gen"))) (letrec ((tick (lambda _ (when (= gen (js->number (js-get (js-global) "__hero_gen"))) (frame!) (js-method (js-global) "requestAnimationFrame" tick))))) (js-method (js-global) "requestAnimationFrame" tick))

      Is this the part where it is compiled?

  • phpisatrash 3 hours ago
    [flagged]
  • genxy 1 hour ago
    Neat project but the AI writing is a turn off. Could use a whole lot less "honest residue".