4 ms·
It was interesting to hear that the Ocaml community has something of that “talking about category theory and functors” vibe that Haskell has. The Haskell posts/
by jitl 6y ago
It was interesting to hear that the Ocaml community has something of that “talking about category theory and functors” vibe that Haskell has. The Haskell posts/community vibe that I see is very heavy on the “ideas of computing research” and I’ve always thought Ocaml was a more “get things done” language because I only ever really hear about it from JaneStreet or ReasonML angle which is very much on the side of “get things done”. That’s a pity.
- darksaints 6y agoActually I think there is a distinction to be made. Both Haskell and OCaml are strongly typed ML-family languages, and to some extent you'll find some overlap in community interests, trending toward the academic side. But Haskell tends to be used more for type theory research, whereas OCaml is far more popular for programming language research due to its popularity for writing compilers. While I don't have internal insight to Jane Street, some of their talks and public information seems to support the idea that they are actually doing a lot of similar work to compiler development. They have stated that they tend to do a lot of symbolic logic and analysis, and they make it sound like they create DSLs that traders can more easily use to convey trading strategies. So OCaml does really well at getting things done, but historically it has been within very narrow definition of the types of things to be done.
- yminsky 6y agoUnderstandable how you'd get that impression, but it's off the mark. We do lots of "ordinary" programming that looks nothing like waiting a compiler. Data analysis, high performance packet processing, log analysis, UI work, you name it. We use OCaml as a general purpose tool, and it really excels in that role.
- pbiggar 6y agoI think the disconnect here is that for much of the world these days, "ordinary" programming is a backend for a web or mobile app, using REST (or maybe GraphQL if you're avant garde). I'm sure Jane Street does lots of web stuff too, but I haven't see a bunch of Core libraries to do, for example, a CRUD app on Postgres in the cloud somewhere.
- darksaints 6y agoInteresting. I've always wanted to dig deeper into OCaml but haven't really had the chance to do so yet. I really enjoy a lot of what I've read about your work with OCaml and it looks like a great place to work for someone like me (4 years of automated trading experience in futures markets and a love of strongly-typed functional programming), but alas I'm not in a position to relocate from Seattle.
- zeckalpha 6y agoHmm. All programs are either compilers or repls. Log analysis compiles logs into an analysis. A GUI repls user interactions. It all has to do with how you define the abstractions.
- ojnabieoot 6y agoI would say OCaml’s most famous use (or at least its most successful) is in the compiler/runtime for Coq, the proof assistant. Which means that a huge bunch of its user base is in academia and theoretical computer science , and whose jobs it is to worry about fancy type stuff :) It also does seem that OCaml is more popular in Europe than North America but I don’t have any data on that.
- momentoftop 6y agoThe Haskell community, in my experience, is far more academic. A recent post to the Haskell libraries mailing list began with: "It was pointed out to me in a private communication that the tuple function \x->(x,x) is actually a special case of a diagonalization for biapplicative and some related structures monadicially." It received 39 pretty enthusiast replies. I don't expect this sort of discussion on Ocaml mailing lists (please correct me, Ocaml mailing list subscribers!) And I think the reason is that Haskell makes this sort of abstraction very very easy, and makes it pay off, while Ocaml does not. In Ocaml, it's not even useful to abstractly define functors, which are the most basic data of category theory. In Haskell, functors are a typeclass that comes with the prelude and are hard to avoid. And there's no reason why you wouldn't use a biapplicative either: https://hackage.haskell.org/package/bifunctors-5.5.7/docs/Data-Biapplicative.html https://hackage.haskell.org/package/bifunctors-5.5.7/docs/Da...
- tome 6y agoDo you have a link to that mailing list post? Search engines are not turning anything up for me.
- momentoftop 6y agohttps://mail.haskell.org/pipermail/libraries/2020-September/030789.html https://mail.haskell.org/pipermail/libraries/2020-September/...