notes/pl/hs/haskell-typeclasses.txt
Ihar Hancharenka 5dff80e88e first
2023-03-27 16:52:17 +03:00

22 строки
1.1 KiB
Plaintext

http://www.haskellforall.com/2012/05/scrap-your-type-classes.html
http://www.reddit.com/r/haskell/comments/t2yy2/scrap_your_type_classes/
Edward Kmett - Type Classes vs. the World:
http://www.reddit.com/r/haskell/comments/2w4ctt/boston_haskell_edward_kmett_type_classes_vs_the/
https://www.youtube.com/watch?v=hIZxTQP1ifo
You can actually recover the do notation syntax.
The trick, which Ed Kmett showed me, is to have all expressions that return a monadic value, f a, instead return a function, Monad f -> f a.
So, return :: a -> (Monad f -> f a), (>>=) :: (Monad f -> f a) -> (a -> (Monad f -> f b)) -> (Monad f -> f b).
You can implement all the monadic combinators like this, and desugar do notation to them.
The do block evaluates to a function that accepts the monad dictionary, so you can even conveniently write code that's polymorphic in the choice of monad,
without having to thread the dictionary around manually.
FakingIt (+Hinze)
Kothari - Cpp Templates Traits vs Haskell Type Classes
DosReis - What is Generic Programming (mostly for cpp)
Overview
http://jeltsch.wordpress.com/2013/02/09/some-interesting-features-of-haskells-type-system/