[HN Gopher] Millet, a Language Server for SML ___________________________________________________________________ Millet, a Language Server for SML Author : todsacerdoti Score : 71 points Date : 2022-08-18 17:45 UTC (5 hours ago) (HTM) web link (azdavis.net) (TXT) w3m dump (azdavis.net) | shpongled wrote: | This is awesome, I will be installing and trying out later today! | | I was working on a SML compiler [1] and language server in Rust | as well, but I dropped the ball towards the end of 2020 as I had | a PhD to finish! | | SML is a great language, and I think some better tooling (like a | language server) is all that it really needs to be useful. | | [1] https://github.com/SomewhatML/sml-compiler | [deleted] | sideeffffect wrote: | SML comes with many implementations/compilers, but it is one | standardized language (with formalized and verified semantics, | IIRC). | | Does that mean that there is one repository with modules (like | PyPI or Maven Central) which all the implementations can use? Is | there even a single build tool that can work with all (or at | least some) of them (like Maven, etc.)? | nextaccountic wrote: | > it is one standardized language (with formalized and verified | semantics, IIRC). | | Unfortunately the spec defines too little, and there are large | deviations between implementations. See | | http://mlton.org/StandardMLPortability | | http://mlton.org/UnresolvedBugs | | http://mlton.org/SMLNJDeviations | | SML/NJ is the most used implementation afaik. mlton is a whole- | program optimizing compiler | lpedrosa wrote: | I think there was something like a package manager. | | Tbh, I wish we lived in an alternative reality where SML won | over JS and we had it running on every major browser. | pharmakom wrote: | Very cool! | | Is anyone using SML these days for major projects? Feels like all | the hype is around F# and OCaml. | azdavis wrote: | Author here, hope you like it! | cwzwarich wrote: | You're reusing some components from rust-analyzer, so is there | any reason you didn't go with a more query-based/demand-driven | architecture, e.g. by also using salsa? | azdavis wrote: | Just to make the MVP simpler. | | I note in the caveats that the current approach is to | recompute everything whenever even one file is changed. But | that's probably not sustainable, as I admit myself in | https://azdavis.net/posts/pl-idea-tooling/ : | | > As an example, it would be unsustainable if, every time we | changed a single function's body, the language server had to | re-typecheck the entire codebase. This might work for an | initial proof-of-concept on a small codebase, but for large | ones, the responsiveness of the language server would drop | precipitously. | | If I get around to addressing this, I'd probably use salsa | and/or follow along this post: https://rust- | analyzer.github.io//blog/2020/07/20/three-archi... | lpedrosa wrote: | This is great. I wanted to create something like this for quite | some time! I definitely try it. | | Well done! | yaseer wrote: | Cool project! | | I always thought SML was a great language for teaching computer | science and functional programming. | | A lot more fun than learning Java. With ML, you got glimpses of | aesthetic beauty in code. | westurner wrote: | The bricklayer IDE and bricklayer-lite are SML IDEs FWIU [1]. | Could Millet and/or three Millet VSCode extension and/or the | SML/NJ Jupyter kernel [2] be useful for creating executable | books [3][4] for learning? | | [1] https://bricklayer.org/level-1/ : | | > _Bricklayer libraries provide support for creating 2D and 3D | block-based artifacts. Problem-solving and math are used to | exercise creative and artistic skills in a fun and innovative | environment. Bricklayer integrates with third-party software | including: LEGO Digital Designer, LDraw, Minecraft, and 3D | Builder_ (LeoCAD; `dnf install -y leocad`) | | [2] https://github.com/matsubara0507/simple-ismlnj | | [3] https://github.com/executablebooks | | [4] https://executablebooks.org/en/latest/ (Jupyter-Book: | Sphinx (Docutils (.rst ReStructuredText), .md)), MyST-Parser | (.md MyST Markdown), Jupyter Kernels (.ipynb Jupyter | Notebooks),) | mark_undoio wrote: | I enjoyed my university learning of SML a lot less than I think | I should have done. Coming back to it later I was really | impressed. | | Before university I'd programmed (primarily in BASIC) for many | years, so imperative programming just made sense to me. | Functional programming seemed alien and the amazing type system | of ML-like languages just seemed to get in my way. | | What I was missing was the context to understand why it was | good. And, to be honest, some compelling examples - we almost | completely glossed over IO and system interfaces and the | gyrations required to do things like efficient iteration just | seemed a bit pointless. | | It was good computer science but I found it to be very | unsatisfying engineering as I couldn't see how to build | something useful. This may be my fault for not doing an | engineering degree ;-) | | Once I understood more of how these systems are built at lower | levels I was much better equipped to be impressed by how much | of that was hidden from view! | hajile wrote: | A great language in need of a bit of tooling love. This is | awesome!! | cannam wrote: | Well! This is interesting. I like the write-up. | | The acknowledgements include "Project Savanna, a group who shares | my desire in improving the tooling around SML", with a link to a | Slack page that asks for a login. Can you say anything more about | this project? | azdavis wrote: | It's a group of mostly current/former CMU 15-150 TAs working on | various SML tools, like: | | https://github.com/brandonspark/mulligan | | https://github.com/T-Brick/molasses | | https://github.com/shwestrick/parse-sml | egcodes wrote: | By the way, the word "Millet" means "people" in Turkish ___________________________________________________________________ (page generated 2022-08-18 23:00 UTC)