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
No comments yet.