Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Really we need somehow to rejuvenate scmutils, either with a faithful port to a modern language, or a spiritual successor of similar calibre.


It's fully rejuvenated in Clojure as "Emmy", with Sussman's support and a bunch of 2D and 3D graphing extensions. See Emmy-Viewers: https://emmy-viewers.mentat.org/ and Emmy: https://emmy.mentat.org/

Thanks to https://2.maria.cloud, everything in SICM and FDG works in the browser as well: https://2.maria.cloud/gist/d3c76ee5e9eaf6b3367949f43873e8b2


Wow, thanks for this!


Of course! And referencing your other comment, during the ~2 year period I've been working on Emmy (on top of work by Colin Smith), I was keen to make the implementation more accessible and well-documented than the original.

There's still not a great map of the project (from primitives to general relativity), but many of the namespaces are written as literate programming explorations: https://emmy.mentat.org/#explore-the-project

Here's the automatic differentiation implementation/essay, for example: https://sritchie.github.io/emmy/src/emmy/differential.html

A rough sketch of the tower is:

- `emmy.value` and `emmy.generic` implement the extensible generic operations

- `emmy.ratio`, `emmy.complex` and `emmy.numbers` fleshes out the numeric tower

- `emmy.expression` and `emmy.abstract.number` add support for symbolic literals

Next we need an algebraic simplifier...

- `emmy.pattern.{match,rule,syntax} give us a pattern matching language

- `emmy.simplify.rules` adds a ton of simplification rules, out of which

- `emmy.simplify` builds a simplification engine

Actually the simplifier has three parts... the first two start in `emmy.rational-function` and `emmy.polynomial` and involve converting an expression into either a polynomial or a rational function and then back out, putting them into "canonical form" in the process. That will send you down the rabbit hole of polynomial GCD etc...

And on and on! I'm happy to facilitate any code reading journey you go on or chat about Emmy or the original scmutils, feel free to write at sam [at] mentat.org, or else visit the Discord I run for the project at https://discord.gg/hsRBqGEeQ4.


This is an absolute triumph. Over the course of several years (starting about 15 years ago) I've been looking for a way to go through SICM and FDG without dredging up an MIT scheme that's useful for nothing else, or dealing with a partial reimplementation in a language with much less expressive power.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: