Why is Haskell, a comparatively obscure language (to Python, C++, etc.), so popular with topics in the orbit of "web3" (blockchain, crypto, metaverse, etc.)?
Part of my confusion is also the social/community aspect, especially with Haskell hackers' frequent and negative attitude toward the enterprise, like Stephen Diehl who has become a sort of spokesperson for the "web3 is a farce (and worse)" narrative. It seems like such a stark juxtaposition, especially with SPJ and Lennart Augustsson, two research giants of the community, taking part in it in a serious capacity.
(To be abundantly clear and uncontroversial, as it pertains to this comment, I'm not interested in discussing "is web3/metaverse {good,bad}", but rather in discussing the purely functional programming community-of-community's interests or anti-interests in it.)
I reckon SPJ is sufficiently "researchy" that it doesn't really matter how it's applied, it's the research that matters. Also, he seems perpetually delighted that he gets to do what he does, and is paid to do so.
OCaml also has some of that, with Tezos, and Rust with Solana. I think it's because functional languages are thought as producing safer code, which is important in this industry.
First, I'm not sure if Haskell is that popular in that space. But I'd say there's a combination of factors.
Python/C++ come with their issues and when starting a project from scratch (e.g. a blockchain), there's more flexibility in the choice of language. In the blockchain field, throwing buzzwords has proven useful to gather money and make some projects stand out (functional programming, formal verification...). Also academics love these language, so starting a project in Haskell/OCaml can get you contributions from academia, possibly some big names joining your team. And of course, strongly typed languages with a clean semantics give you more safety which is important in some fields.
Functional programming lends itself well to finance through correctness and also the fact everything you do is basically data in -> data out. Versus other domains where using stateful objects to model things is easier.
Mainly because using monadic I/O trivially encourages you to write pure (deterministic) code for most of your programs, which makes it easy to write tests for them. Besides that, it's easy to write great libraries, which then makes the language very expressive. The downside is that the cognitive load for using it can be very high, but looking at C++ it seems clear that high cognitive loads are a feature across the industry, and here to stay.
I think I operate in those orbits, but I haven't come across much Haskell (plenty of TS, Golang, Rust). Where Haskell has cropped up it was typically in the context of "we want to prove this code is correct" (plausibly important if money is being transacted), plus a bit of "we like Haskell so we used it".