It's fascinating to me looking at beginning language guides and thinking "what does this say about the culture of the language"
When I was delving into #OCaml it was (with affection) "here's hello world and here's a dense academic paper on implementing event systems in OCaml 5!"
#Java guides used to be centered on the assumption that you were a web programmer looking to do applets, even long after that assumption died.
#RustLang generally seems to assume a background in programming w/ a CLI.
After a while with #OCaml my conclusion there is that:
OCaml really is a language for people who are fairly mathy and academic but who still want to get stuff done. The culture felt entirely focused around this question. So you get the dense academic paper not to scare you, but because they think you will be legitimately interested in it (albeit probably not right after hello world, but fairly soon).
OTOH there's a kind of ruthless efficiency: if you need to compromise you compromise.
I have this blog set up and ready for writing using a bare, classic web stack with no framework, no static site generator, just html/css files and some short scripts in JS and OCaml.
The only thing I feel is missing is an RSS feed. Presently I am feeling very inclined to just rolling my own RSS using the very same stack (a text editor and scripts) instead of switching to some SSG just to get an RSS feed. Something tells me that this is a sinful, heretic thought.
Ideas welcome on how to avoid such heresy. Encouragement to just do it also welcome.
Reminder: OCaml Modules Twitch stream starting in an hour's time, today, Wednesday, May 1, 2024 1800 IST | 1430 CEST | 1330 GMT www.twitch.tv/shakthimaan@ocaml_org#OCaml#Developers
quoting @prophet
mli files are mostly used to constrain the visibility of definitions whereas hs-boot files are about allowing mutual recursion between modules (which OCaml doesn't support, even with mli files!)
But the mechanism by which they achieve their goals is nearly identical even though the perception of it is so vastly different.
I guess the conclusion to draw from this is that both sides are wrong: IMO, mli files are not nearly as good as OCamlers think they are, but hs-boot files aren't as ugly as Haskellers think either.
-- prettySrcLoc and prettyCallStack are defined here to avoid hs-boot
-- files. See Note [Definition of CallStack]
Backpack's design is primarily driven by compatibility considerations (“how do we build upon GHC's existing foundation?”), rather than elegance. In particular, Backpack doesn't eliminate those ugly .hs-boot files, it just automates and hides their generation and processing.
In one hand I feel sad that some lovely folks on F# twitter were laid out or their teams were disbanded, on the other hand, I feel that there's certain momentum in the F# community as I see more and more folks getting to try it out and talk about it, perhaps that ocaml popularity boom helped a lot here as well.
The Dune team is looking to improve the developer experience to better align what you get with Go and Rust. We plan to run a Dune Developer Preview where you’ll be able to test drive and give us feedback on a revised user experience.
I really would like promote also the book we written available here: https://robur-coop.github.io/miou/ which explains everything to know about Miou, schedulers, parallelism and asynchronicity. Happy hacking!