5 ms·
You joke, but Scala's complexity is a very real problem. Specifically, abuse of implicits can make trying to understand Other People's Code quite the nightmare
by mietek 14y ago
You joke, but Scala's complexity is a very real problem. Specifically, abuse of implicits can make trying to understand Other People's Code quite the nightmare. Even reading the function type specifications in the official Scala docs is a chore.
- ebiester 14y agoOkay, I'll agree about implicit abuse. I feel like reading the function types is something I will eventually feel more comfortable with, as if it's my fault for picking a language with both the power and static typing. And I haven't figured out a better way to do it myself.
- mietek 14y agoI would argue Haskell is more powerful than Scala, and also more readable, for the most part. You can certainly find examples of unreadable Haskell, specifically in the vicinity of ivory towers — there must be something in the air up there which makes academics fond of operator line noise. However, compare the following Scala [1]: implicit def KleisliCategory[M[_]: Monad]: Category[({type λ[α, β]=Kleisli[M, α, β]})#λ] = new Category[({type λ[α, β]=Kleisli[M, α, β]})#λ] { def id[A] = ☆(_ η) def compose[X, Y, Z](f: Kleisli[M, Y, Z], g: Kleisli[M, X, Y]) = f <=< g } …and Haskell [2]: newtype Kleisli m a b = Kleisli { runKleisli :: a -> m b } instance Monad m => Category (Kleisli m) where id = Kleisli return (Kleisli f) . (Kleisli g) = Kleisli (\b -> g b >>= f) [1]: https://github.com/scalaz/scalaz/blob/master/core/src/main/scala/scalaz/Category.scala#L278 https://github.com/scalaz/scalaz/blob/master/core/src/main/s... [2]: https://github.com/ghc/packages-base/blob/master/Control/Arrow.hs#L141 https://github.com/ghc/packages-base/blob/master/Control/Arr...