HNNewShowAskJobs
Built with Tanstack Start
Linux mode setting, from the comfort of OCaml(roscidus.com)
82 points by ibobev 4 days ago | 30 comments
  • dlcarrier4 days ago

    Is OCaml an especially comfortable environment to work in?

    One of my favorite programs, an ncurses-based RPN calculator called Orpie, is written in OCaml, but I've never messed around with it.

    • Yoric4 days ago |parent

      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.

      • nextos4 days ago |parent

        It does have a lively ecosystem in some niches. Formal verification is one of them.

        For example, https://opam.ocaml.org/packages/why3 is a little marvel of engineering.

      • yawaramin4 days ago |parent

        Does Haskell have or-patterns yet? Last I checked OCaml still has the lead in pattern matching power :-)

        • antonvs4 days ago |parent

          https://ghc.gitlab.haskell.org/ghc/doc/users_guide/exts/or_p...

          • yawaramin3 days ago |parent

            I'm confused about something. According to 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?

            • tome3 days ago |parent

              They'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

              • yawaramin3 days ago |parent

                OK, 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
                • antonvs3 days ago |parent

                  That 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#.

                • StopDisinfo9103 days ago |parent

                  > 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.

                • tome3 days ago |parent

                  > 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?

    • Crespyl4 days ago |parent

      Hey, I've also used and loved Orpie!

      I'm not extremely familiar with any of the ML family, but Eric Lippert had a blog series I followed for a while in which he was writing a Z-Machine in OCaml: https://ericlippert.com/2016/02/01/west-of-house/ I followed along but in Rust for a while, though I think he paused the project at some point and I lost steam.

      I learned more about Rust (which, IIRC was first implemented in OCaml) than I did about OCaml, but it's always seemed like a nice language.

      • yawaramin4 days ago |parent

        Lippert started doing that blog series as part of his learning journey when he got hired at Facebook to write OCaml. Just a fun historical fact.

    • poulpy1234 days ago |parent

      > Is OCaml an especially comfortable environment to work in?

      It is one of these small languages that are not completely niche: it is taught and used, you'll be able to do plenty of things, but there is not the community and resources you find in the big ones or even the mid-sized ones

    • cdaringe3 days ago |parent

      Certain parts are unmatched joy. However, some things, as basic as printing arbitrary data types, are annoying, compared to other langs.

    • yawaramin3 days ago |parent

      The thing that I really like about it is that the compiler is very, very fast. Especially when you're in the edit-compile-rerun cycle and doing incremental compiles. This gives people a huge productivity boost and keeps them in flow state much more easily.

    • vipvip3 days ago |parent

      [dead]

  • mos874 days ago

    The only program written in OCaml that I think I've used is WeiDU mod installer for Infinity Engine games. Took a quick look under the bonnet too. Suffice to say, my only thought has been that should the author had chosen a sane language like say Perl (which seems to be ideally suited to what WeiDu does), the software could have been improved by many, many people.

    • _flux4 days ago |parent

      Unison could be one of the more popular programs written in OCaml.

      This sort of lead into trouble at one time, as the author chose to use the OCaml serialization of data as the protocol, so synchronization between 32- and 64-bit platforms or even binaries compiled with different versions of OCaml was not possible. Eventually this was fixed, though, with custom serialization.

    • antonvs4 days ago |parent

      That would have required the author to write Perl. Some sacrifices are not worth making.

      • mos874 days ago |parent

        well then the functionality has been sacrificed - because few people besides the author were willing to brave hacking in OCaml I presume

        • StopDisinfo9103 days ago |parent

          Just to be sure, are you complaining about the work done by the solo developer of a patching tool for a collection of old games distributed for free and thanklessly maintained for years because you dislike the language they chose for their own work which I repeat they are providing for free?

          • mos872 days ago |parent

            Be sure, I'm not complaining about anything here.

            Tho initially all those years back IIRC I wanted to tinker with how it installs mods for the Linux native "enhanced" editions. Otherwise I wouldn't even know what it's written in.

        • antonvs3 days ago |parent

          The number of people willing to brave hacking in Perl seems to have fallen off a cliff - for good reason - so it’s a weird choice of example.

          • mos872 days ago |parent

            If falling out of fashion is that good reason then yeah. At least it's not a highbrow esoteric language thingy that next to no-one in the wild used to begin with.

            I've personally fixed an early noughties Perl script where one of the modules it used had changed its name (but thankfully not the interface, not significantly at least), among a couple of other compat problems. Fixing it turned out pretty straightforward even for someone who's far from a greybeard Perl "hacker".

            • antonvs2 days ago |parent

              Perl didn't just fall out of fashion. It failed as a language because it wasn't able to keep up with what other languages could do in practice. The people behind Perl recognized that, but weren't able to agree on a solution. So usage of the language collapsed.

              A big part of the problem wasn't that you couldn't write good code with Perl, but that there were too many ways to write bad code with it. That made it anathema for any sort of corporate development, which is the main driver of programming language progress.

    • jasaldivara3 days ago |parent

      I don understand: If there are so many developers willing to contribute with non OCaml languages, why they don't just implement their own mod installer in Perl, Java, PHP or whatever a "sane" language is?

    • mhd3 days ago |parent

      Perl? Are there existing modules for the Linux KMS interface? Otherwise this would also be an off-beat language choice, and these days with only marginally more developers… (And I say that as a Perl fan)

      Personally, I'm glad that this isn't yet another Rust post ;)

      • mos873 days ago |parent

        No, I haven't meant to imply that Perl should be used for the subj. But doubt it'd have proven any worse than OCaml. All depends on the programmer unsurprisingly.

        • ernst_klim3 days ago |parent

          > But doubt it'd have proven any worse than OCaml

          Unlike Perl, OCaml is AOT compiled in a very efficient machine code, has a good static type system and has a good concurrency support. Both are not very mainstream.