SlamData has an analytics engine written in functional Scala by expert-level functional programmers. It's a wonderful code base, but also one of many testaments to the complete failure of tagless-final to provide effect parametric reasoning. https://github.com/slamdata/quasar/search?q=Sync&unscoped_q=Sync …
-
Show this thread
-
If expert functional programmers working in a supportive environment do not interact with semantic type classes, but instead work with "IO" disguised as "Sync", then there is zero chance purported benefits of tagless-final materialize in mainstream.
1 reply 2 retweets 9 likesShow this thread -
Anyone remotely paying attention to how tagless-final is used in Scala will observe that: 1. Sync appears everywhere 2. Code is not more testable (due to 1) 3. Effects are embedded outside of effect constructors (In fact, 'catch in map/flatMap' is designed for 3.)
2 replies 1 retweet 9 likesShow this thread -
Encouraging outsiders to 'tagless-final' is encouraging them to engage in mindless ceremony without understanding or benefit. These cargo-culted Sync code bases will be rejected and rewritten over time, & will push many from FP, because the 'Why?' cannot be answered.
4 replies 6 retweets 19 likesShow this thread -
Even in Haskell, where the cost/benefit ratio of tagless-final is radically improved, most commercial developers do NOT create type classes to subset effects. In fact, some commercial firms I know have ripped out such code because the benefits were deemed insufficient (!).
1 reply 1 retweet 18 likesShow this thread -
While I still contend tagless-final can be useful for library authors (for reasons unrelated to effect parametric reasoning or testability), it makes no sense for *most* teams doing application development. Basically... ...THE EMPEROR HAS NO CLOTHES. Someone had to say it.
5 replies 3 retweets 30 likesShow this thread -
Replying to @jdegoes
> disguised as Sync Most of the non-end-of-the-world code we write is in ApplicativeError/MonadError, mentioning just as a data point. Of course the biggest win is to design so that most stuff is at most in Either, or just Pure
2 replies 0 retweets 2 likes -
Replying to @dgeorgiev_bg @jdegoes
The ceremony does buy you ability to write most of your code requiring just MonadError? Up to discipline, as you explained.
1 reply 0 retweets 0 likes -
Replying to @dgeorgiev_bg
Once you go to Monad, you're already well beyond declarative programming.
2 replies 0 retweets 1 like
"Once you go to Monad, you never go bad"?
Loading seems to be taking a while.
Twitter may be over capacity or experiencing a momentary hiccup. Try again or visit Twitter Status for more information.
Read my blog!