3 ms·
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.
by sritchie 3y ago
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/ https://emmy-viewers.mentat.org/ and Emmy: https://emmy.mentat.org/ https://emmy.mentat.org/
Thanks to https://2.maria.cloud https://2.maria.cloud, everything in SICM and FDG works in the browser as well: https://2.maria.cloud/gist/d3c76ee5e9eaf6b3367949f43873e8b2 https://2.maria.cloud/gist/d3c76ee5e9eaf6b3367949f43873e8b2
- tobinfricke 3y agoWow, thanks for this!
- sritchie 3y agoOf 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 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 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 https://discord.gg/hsRBqGEeQ4.
- Y_Y 3y agoThis 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.