diff --git a/manuscript/backmatter.md b/manuscript/backmatter.md index be994f30..64acedfd 100644 --- a/manuscript/backmatter.md +++ b/manuscript/backmatter.md @@ -634,6 +634,14 @@ explicitly, which is more boilerplate but makes the code easier to read: println line ~~~~~~~~ +Whereas in Scala this encoding may be called *Finally Tagless*, in Haskell it is +known as MTL style. Without going into details, some Scala developers didn't +understand a research paper about the performance benefits of [Generalised ADTs +in Haskell](http://okmij.org/ftp/tagless-final/index.html#tagless-final). + +An alternative to MTL style are *Extensible Effects*, also known as [Free Monad +style](http://okmij.org/ftp/Haskell/extensible/more.pdf). + ## Modules diff --git a/manuscript/book.org b/manuscript/book.org index eebb6966..1020b09d 100644 --- a/manuscript/book.org +++ b/manuscript/book.org @@ -17026,6 +17026,14 @@ echo Console{readln, println} = do line <- readln println line #+END_SRC +Whereas in Scala this encoding may be called /Finally Tagless/, in Haskell it is +known as MTL style. Without going into details, some Scala developers didn't +understand a research paper about the performance benefits of [[http://okmij.org/ftp/tagless-final/index.html#tagless-final][Generalised ADTs +in Haskell]]. + +An alternative to MTL style are /Extensible Effects/, also known as [[http://okmij.org/ftp/Haskell/extensible/more.pdf][Free Monad +style]]. + *** Modules Haskell source code is arranged into hierarchical modules with the restriction