Poly/ML – A Standard ML Implementation
Lyngbakr
49 points
10 comments
July 06, 2026
Related Discussions
Found 5 related stories in 765.3ms across 14,015 title embeddings via pgvector HNSW
- Comparing Objective Caml and Standard ML lambertsimnel · 14 pts · May 21, 2026 · 60% similar
- Hyperpolyglot Lisp: Common Lisp, Racket, Clojure, Emacs Lisp veqq · 148 pts · May 18, 2026 · 56% similar
- Show HN: TiGrIS, a tiling compiler that fits ML models onto embedded devices asteinh · 20 pts · April 29, 2026 · 50% similar
- Mlibc: A fukk-featured portable C standard library fanf2 · 17 pts · June 26, 2026 · 49% similar
- RubyLLM: A Ruby framework for all major AI providers doener · 372 pts · June 24, 2026 · 48% similar
Discussion Highlights (3 comments)
tingletech
"Standard ML is a functional programming language, in the sense that the full power of mathematical functions is present." From a Pdf linked on the repo (I didn't know what Standard ML was, I was hoping for a mark up language)
porcoda
For those interested in the Standard ML compilers, Mlton is another one worth checking out. Standard ML of New Jersey (smlnj) is another interesting one although it tends to be more of a research vehicle than polyml or mlton. If you are inclined toward verification, the cakeml project is quite cool as well. For those unfamiliar with standard ML, if you’ve heard of ocaml or F#, they’re relatives in the ML language family.
hutao
I've always felt that ML hit the sweet spot between functional and imperative programming. It affords conveniences such as algebraic data types and first-class functions, but unlike Haskell, it doesn't require monadic programming to use IO or mutable references. ML also has an interesting module system, which achieves similar goals as object-oriented programming, but in a very different way. While mainstream "class-based" OOP identifies the data type with the unit of encapsulation, ML has "modules," which are separate entities from types, and which may both define types and values as members. However, a downside of this approach is that you sacrifice late binding, as the module language and "core" language are stratified into different layers. Instead, dependency injection is achieved through module-level functions, called functors, A lesser-known fact is that ML originated as the scripting language for the LCF proof assistant (which is where the name "ML," or meta language, comes from). In the LCF tradition, the inferences rules of the logic are implemented in a trusted kernel, then clients use those inference rules to write tactic scripts that construct theorem objects. This design was supported by ML's module system: theorems were defined as an abstract type in a "kernel" module, and the inference rules were defined as functions inside the module. Here is a tutorial that explains the LCF design better than I can: https://www.cs.cmu.edu/~fp/courses/15317-f17/recitations/rec...