4 ms·
Well, many of the benefits of Rust, but in a simpler and garbage-collected language. Possibly the best language (alongside Haskell) if you need pattern-matching
by Yoric 11mo ago
Well, many of the benefits of Rust, but in a simpler and garbage-collected language. Possibly the best language (alongside Haskell) if you need pattern-matching. Not quite as good if you need lots of libraries or interaction with other languages.
- nextos 11mo agoIt does have a lively ecosystem in some niches. Formal verification is one of them. For example, https://opam.ocaml.org/packages/why3 https://opam.ocaml.org/packages/why3 is a little marvel of engineering.
- yawaramin 11mo agoDoes Haskell have or-patterns yet? Last I checked OCaml still has the lead in pattern matching power :-)
- antonvs 11mo agohttps://ghc.gitlab.haskell.org/ghc/doc/users_guide/exts/or_patterns.html https://ghc.gitlab.haskell.org/ghc/doc/users_guide/exts/or_p...
- yawaramin 11mo agoI'm confused about something. According to https://www.haskell.org/ghc/ https://www.haskell.org/ghc/ version 9.10.3 was released on 2025-09-10. How is there a version 9.12.1 listed for the or-patterns feature? Are these versions for different things?
- tome 11mo agoThey're versions of the same thing, and 9.12.1 was chronologically before 9.10.3. It looks like you can find the entire chronology at https://www.haskell.org/ghc/blog.html https://www.haskell.org/ghc/blog.html
- yawaramin 11mo agoOK, side note, whoever decides the GHC release numbers should be pulled aside and given a quick talk about how version numbers are supposed to work. Anyway, looks like or-patterns just landed as a GHC extension: foo (Bar; Baz) = 0 I still like OCaml's (built-in) syntax better: let foo (Bar | Baz) = 0 Which I feel stems from its elegant decision to use the pipe character as the 'alternative pattern prefix': let foo = function | Bar | Baz -> 0
- tome 11mo ago> whoever decides the GHC release numbers should be pulled aside and given a quick talk about how version numbers are supposed to work How is that?
- StopDisinfo910 11mo ago> whoever decides the GHC release numbers should be pulled aside and given a quick talk about how version numbers are supposed to work. 9.10.3 is a patch for the 9.10 version which was published after 9.12.1 but relates to an older version. Haskell keeps maintaining multiple versions of the toolchain.
- antonvs 11mo agoThat release numbering is pretty common for programming languages. People are still using older supported versions, which still get incremental upgrades. Other languages that do this include Python, Java, Go, Node.js, Ruby, PHP, C#.