I would say the exact same thing about the imperative style, and I have lived in both the Imperative/OO world and the Declarative/FP world.
> Given that 99% of software is not written in these languages
citation/elaboration required, and not just because SQL and similar tools are declarative like another comment mentioned: a great majority of imperative languages have begun to include/adopt functional programming tools and ideas (map, reduce/fold, lambdas)... perhaps it's because they are extremely useful concepts.
I used to freak out when I'd find the library in Clojure I wanted to use but it had no documentation. Eventually I just started looking at the implementation and I'd see it's like the entire library is 35 lines of code! Or like 102 lines of code! You don't need documentation for something that small.
I've never seen this before in other languages. If you think it's too complicated, you might just be overthinking it.
(FWIW: it's shoreleave https://github.com/shoreleave/shoreleave-remote, it allows for exposing a server-side namespace as a client-side API in the browser).
For me a big problem was how dense the code can be. I was relying on the verbosity of imperative languages to act as a sort of whitespace.
Another thing is pattern recognition when reading code. I had been using imperative languages for so long that I could mentally gloss over chunks based upon the shape of the code. But functional languages tend to have different shapes from imperative ones so it all looked unfamiliar to me and I got overwhelmed.
Eventually I was able to get passed this stuff and functional languages make a lot more sense to me now. Now I prefer them despite working in Java for my day job.
Well naturally if all you do is 'look'. Is that how you learnt whatever programming language or style you use now? You just glanced at some code and the necessary cognitive structures leapt with ease into your mind?
perhaps you have to have a special gene to figure this stuff out
Well I'm learning Clojure right now. It doesn't seem complicated to me (though it is unfamiliar enough that I have to think quite hard about how to do things, which strikes me as a good thing). And, for reference, I'd generally place myself in the lower 30% or so of developers in terms of natural ability.
It sounds to me like you're just not very curious about what functional approaches have to offer. Which should be perfectly fine. But your comment sounds like a complaint.
I do find languages like Scala and Haskell slightly appealing, but I find many of the deep concepts and rigid type are orthogonal to the problem I am dealing with at hand. I realize for some working thru the type system helps them solve the problem at hand, but for me, it often seems to get in my way.
I doubt it. It's probably more because you haven't invested the time to actually sit and learn it.
Quite the opposite on my experience. The fact that something is familiar doesn't mean it is free of complications.
And then there is the whole lot of Scala, Kotlin, Swift, TypeScript, before we even delve that Haskell and OCaml are used by Jane Street, Intel, Microsoft and Facebook, just to throw a couple of names around.
Don't worry, you can use C and Go instead.
Maybe its because I'm not smart enough? Given that 99% of software is not written in these languages perhaps you have to have a special gene to figure this stuff out. Or maybe its just people trying to be different or trying out things on the fringe.
I'm not sure what the answer is or if I should try harder.