| Two reasons: 1) Uncle Bob's "perpetual state of immaturity" [1] 2) Non-FP languages and "hybrid" languages do a bad enough job of FP to stop people from seeking out more. E.g. FP lang: Doesn't have null. Uses Maybe in the rare cases its useful. The benefit is not having null.
Imp lang: Keeps null. Adds Optional so now there's two ways not to have a value. FP lang: Functions are lambdas are first class.
Imp lang: Separate Function object. Lambdas can't throw checked exceptions or update variables in the method's scope. FP lang: Understands when mutation can and cannot happen. Can share data and fuse code efficiently.
Imp lang: Cannot assume underlying data doesn't change. Programmer needs to make defensive copies. FP lang: map (+1) [1,2,3]
Imp lang: Arrays.asList(1,2,3).stream().map(x -> x + 1).collect(Collectors.toList()) If I grew up with the kind of FP that made it into mainstream languages I'd probably be against it too. [1] https://blog.cleancoder.com/uncle-bob/2014/06/20/MyLawn.html |