[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)