Learn Programming with OCaml

(lmf.cnrs.fr)

127 points | by elvis70 5 hours ago

7 comments

  • zvmaz 2 hours ago
    Tangentially, a great interview with the creator of OCaml, Xavier Leroy [1].

    [1] https://www.youtube.com/watch?v=9Cswiqrq6So

  • Fervicus 18 minutes ago
    OCaml programmers, what learning resource would you recommend starting out with? I know there's https://cs3110.github.io/textbook/chapters/basics/intro.html. How does this book compare? Anything else you would recommend?
  • sweetjuly 2 hours ago
    I do really wonder what it would be like to learn to program for the first time with OCaml.

    I remember learning to use OCaml in a properly functional way after so long writing code in C and it was really miserably painful trying to change how I thought about algorithms. I eventually got over the hill and it changed how I write code in C (for the better?), but I do wonder if it would have been easier to have learned OCaml as a first language instead.

    • nestorD 1 hour ago
      I did so! (quirks of the path I took in the French educational system)

      I went through a book similar to the one above, with no internet connection. The first few weeks were rough: I did not quite know what a type was and the compiler error messages were unforgiving and hard to understand without that context. But, once I grokked the core ideas (a proper idea of what could be done with recursion took much longer), things went surprisingly smooth. I definitely credit it with making me a better programmer.

    • fat-chunk 1 hour ago
      When I first learned to program at university we were taught Haskell. That was 15 years ago and I've not really programmed anything in Haskell since, instead I've racked up years coding professionally in pretty much all the major imperative languages.

      I'm aware of why Haskell is not practical as a production language for most companies, but I have to say I've never really coded in anything else that feels as "neat" and it's a shame. Every other language feels like it has some idiosyncratic scaffolding one has to learn, reminding you that you're constrained by how computer hardware works, rather than just expressing an algorithm in terms of inputs and outputs.

      I would say it has made me a better coder, I've still kept a preference for keeping data immutable, copyable and abstracting complexity into easily testable functions over classes with unobservable mutable state.

    • yodsanklai 1 hour ago
      It's a good language to learn programming. Very simple semantics. But ultimately, you need to learn different paradigms, I think the order doesn't matter, they'll still be an element of surprise.

      Also OCaml lets you write imperative code if you wish so. So you can learn the different paradigms within the same language.

  • throwaw12 3 hours ago
    > Learn Programming with OCaml

    Lately, I keep asking myself, do I need to learn this new thing, should I force myself to learn this thing, LLMs know it anyways and so on.

    So (asking genuinely), should we learn these things?

    • xiaoyu2006 2 hours ago
      You can also learn for your own amusement, and solely for the fun of comprehension; a lot of mathematician were driven by this. It's a shame current social value places so much utilitariaism on learning.
      • aaplok 10 minutes ago
        I like baking. There are machines that can bake bread at an industrial scale that I cannot compete with. There are home kneaders that do much of the work very well. I use one of those more often than not.

        I still think it worth my time kneading dough by hand. It teaches me the various properties of flour, how external factors like humidity or temperature impact the overall process, and I believe that it makes me a better baker, even when I use a machine, because I am better at controlling what the machine does. When I get a new brand of flour I will make sure to bake everything by hand first to "get a feel".

        Kneading by hand is also very relaxing to me. This is probably the main reason I bake in the first place.

        Programming, and other activities are not very different. We now have machines that can do it faster, at a fraction of the quality many people deem good enough. If you hate coding, that is probably all you need to use, and learning a new language might just be a frustrating experience not worth subjecting yourself to. But if you enjoy coding then it should make you better at it, even when you use the machines.

      • f1shy 2 hours ago
        This. The question can be seen like “should I learn to solve sodoku, if a computer can do it better?”
      • underlipton 2 hours ago
        As always, it is good to be aware that many people are too anxious about more existential issues to comfortably an consistently expend effort on intellectually-taxing tasks that aren't perceived as directly related to their survival. If it's an issue with social values, it's less of one related to learning as it is to perpetuating artificial scarcity.
        • Barrin92 1 hour ago
          >to comfortably an consistently expend effort on intellectually-taxing tasks that aren't perceived as directly related to their survival.

          the average person spends 6(!) hours a day on their smartphone, the average TikTok user spends 100 minutes on the app alone. This isn't about artificial scarcity, it's about the average person looking like the Wall-E people

          • Avicebron 1 hour ago
            Escapism and making a concentrated effort on something are two different things. Yes it would probably be good if you could flip a switch and use the small windows of time we look at our phone per day to study OCaml, but it's not really realistic..

            People who are asking these questions are saying "will me spending my time learning OCaml help me land that job that pays six figures and has health insurance so I can not rot away living on the margin". They aren't saying "I only do things that will make me money".

            • Barrin92 21 minutes ago
              >use the small windows of time we look at our phone

              again, it's not a small window. It's six hours. That's almost half your waking day. People spend virtually their entire leisure time rotting away on low quality entertainment.

              >will me spending my time learning OCaml help me land that job

              that's a pointless question for one you never know if something will land you a job, new opportunities don't open up before you do something, secondly the relevant question is, should I stop doing X and start learning Ocaml, or Chinese, or take a welding class because all of that even if it doesn't work out beats scrolling through Instagram.

              I don't even take offense with the idea that you engage in activity that makes you money, because pure selfishness on that front would be an improvement to what most people are doing now.

      • _HMCB_ 2 hours ago
        This ^
    • dadoum 2 hours ago
      My experience with OCaml has transformed how I think about programming and complex system design. This may also be true if you learn any other functional programming language, but OCaml is easy and flexible which makes it good imo as a door towards the more formal part of comp sci. Even for steering an LLM I think this might help.
      • f1shy 2 hours ago
        My experience with lisp was exactly that: it completely changed how I think about programming, but much more, how I think about systems and engineering. (I learned it through SICP)
    • henryrobbins00 2 hours ago
      Michael Clarkson teaches OCaml at Cornell. I highly recommend his free course materials [1]. He’s an excellent educator. Learning functional programming paradigms had a major influence on how I design programs. Clarkson also taught snippets from the Pragmatic Programmer, which was equally influential (as it has been for many many others) [2].

      [1] https://www.cs.cornell.edu/courses/cs3110/2025sp/

      [2] https://pragprog.com/titles/tpp20/the-pragmatic-programmer-2...

    • monsieurbanana 2 hours ago
      You could have asked this question 10 years ago, long before llms. It's not like you'd realistically would get an ocaml job back then when there's so few of them, so why bother?

      The answer is still the same as well, people learn ocaml either because they enjoy it, or because learning a functional language makes them a better programmer overall and teaches your brain to approach a problem in a different way.

    • yawaramin 42 minutes ago
      Posting 'why should we learn' a programming language on Hacker News is top-quality ragebait :-D
    • adalacelove 3 hours ago
      Should you learn history if it is already written in a book? Should you live if others are already living?
      • a2ff6eeb0 2 hours ago
        For most people, history is trivia.
        • doc_ick 2 hours ago
          If you ignore history everything is perfect, or at least a controlled slight deviation.
    • nine_k 2 hours ago
      Outsourcing all the thinking to machines may have consequences you might not like.

      An oblique explanation: https://croissanthology.com/earring

    • ahoka 2 hours ago
      Why learn an instrument when you can just press play?
      • dismalaf 2 hours ago
        Why does anyone have any hobbies?
      • a2ff6eeb0 2 hours ago
        Cultural inertia: until recently, you couldn't just press play and get even a wide selection of music: for most of history, if you wanted music, you had to make it or hire someone to do it for you.

        More recently, you had to go to the store and buy it, which meant you didn't have much variety.

        Today, learning an instrument is for social status, inheriting the shine of the past, where music was rare and costly. The reason to learn an instrument today is because the former situation was romanticized.

        It'll probably take a generation before people ease into guilt-free enjoying infinite, fully generated music.

        • jonahx 2 hours ago
          These theories sound vaguely plausible.

          I would rate them as about 5% true and 95% false, as explanation of the past and prediction of the future.

          The satisfaction of learning to do something difficult isn't going away, and the social status associated with it won't either.

          • a2ff6eeb0 1 hour ago
            Sure, I guess. But today, something like 30% of people play music or sing regularly enough to say they do it (ie, not very much at all). Even a couple of generations ago, it was much higher. It's not going to die out, but I think a lot of people are asking themselves if they want to bother.
        • toolslive 2 hours ago
          your body needs exercise or you end up an obese couch potato. Your mind is similar: it needs exercise or you end up a dunce.
        • otabdeveloper4 2 hours ago
          [dead]
    • zem 37 minutes ago
      you are eventually going to have a very bad time if you do not have a solid mental model of the code the LLM is writing, and indeed if you cannot steer the LLM so that its code conforms to your mental models. learning ocaml is a great way to add some valuable tools to your toolkit when it comes to thinking about code and how it fits together.
    • yodsanklai 1 hour ago
      LLM + static types is a winning combo. And if you want to be serious with what you do with your LLM, you need to understand the output to some extent.

      That being said, you may as well use Rust. The extra complexity of manual memory management and Rust idiosyncracies are easily dealt with by the LLM.

    • sgt 2 hours ago
      Seeing that you already know programming, I'd say it'd be less risky for you. But the only reason you're able to pilot an LLM to do programming for you, is because you understand programming and architecture.

      But what about the future generations skipping the step of learning the OCaml's, the C's, the Python's...? It's quite concerning.

      Oh by the way, yes. Learn OCaml!

    • andsoitis 2 hours ago
      I would sharpen my software engineering skills rather than coding / programming skills.
    • RobRivera 1 hour ago
      LLMs know it anyways?

      Hhhmmmmm

    • doc_ick 2 hours ago
      I mean if you want to let llms do everything for you go ahead. Wall-e implications aside, it seems like a great self centric life.
    • sublinear 2 hours ago
      What the hell else do you have to do?!
    • fuldeka 1 hour ago
      [dead]
  • amelius 35 minutes ago
    What is the recommended GUI framework for OCaml? (Please don't say HTML)
    • foretop_yardarm 22 minutes ago
      Camlkit-gui for macOS
      • amelius 0 minutes ago
        Anything for Linux? Or cross-platform?

        I looked for Qt bindings but they appeared to be abandoned last time I checked.

  • veqq 2 hours ago
    Why is the PDF smaller than the Epub file?
    • shakna 40 minutes ago
      The ePub contains both SVGs and PNGs, the latter of which doesn't compress all that well for "plain zip", which an ePub is.

      The PDF on the other hand gets to use zlib for streaming all the objects. It gets half decent compression.

    • tangus 48 minutes ago
      Probably vector-drawn diagrams are rendered into bitmap images for the EPUB version.
  • giraffe_lady 2 hours ago
    OCaml is the LLM secret weapon right now. They are better at writing it than they are any other language.* That’s all I have to say about it.

    * Other “pure” hindley-milner languages are tied but among them ocaml has some particular strengths that I’m sure others will discuss.

    • nine_k 2 hours ago
      Two genuine questions. (1) Why not Rust? (2) Why not Haskell?

      (I have my own answers, but I'd love to hear yours, too.)

      • yawaramin 1 hour ago
        1. Compile times. OCaml compiles very quickly (think Go) and this gives you a fast feedback loop. It lets the LLM rip through the implementation.

        2. OCaml has an idiomatic approach of using interface files for all modules that can be accessed outside their libraries, and interface files give LLMs a great précis of exactly what is wanted. They then just have to follow the types and fill in the blanks to get the implementation. It's nearly the perfect use case.

      • giraffe_lady 2 hours ago
        Both force the model to reason about types too much. The more constrained type system plus global inference merely holds them to what they already wrote, with very fast feedback.

        Rust is fine if you need it but most things don’t and ocaml has more convenient abstractions for “regular” work. If you need rust you need rust but ocaml isn’t that far off in perf.

        Haskell type system is too expressive, it itself becomes a place for the agent to make mistakes and get bogged down.

      • throwrioawfo 2 hours ago
        (1) complexity

        (2) performance

    • phtrivier 2 hours ago
      Flamebait aside, has this been studied for real ? Curious how you would rate that...
      • giraffe_lady 2 hours ago
        Yes I contributed code to a paper on it this spring. It’s hard to measure and “studying” it just means feeding money into frontier models. If anyone has a few billion tokens for a couple masters students hmu so they can get it published.
        • yawaramin 1 hour ago
          I'd be very interested to read this paper when it comes out.
          • giraffe_lady 1 hour ago
            I will add you to the list, I’ll definitely post it on HN also.

            They had originally planned on june and my part is in so…. Me too.

            • Fiodel 49 minutes ago
              I'm interested too - besides the paper, is it your personal experience that working with llms on ocaml is superior to other languages? I thought with the sheer amount of training data languages like python and java would be "ideal"
              • giraffe_lady 30 minutes ago
                No it’s more about speed and quality of the feedback loop. So you want the compiler that catches the most stuff when given the least information.
    • steve1977 1 hour ago
      Did you also compare F#?