3 ms·
This is misleading. There's no place in the specification of Haskell that specifically defines monads as part of the language. They aren't a language feature. T
by notfashion 7y ago
This is misleading. There's no place in the specification of Haskell that specifically defines monads as part of the language. They aren't a language feature. They are a pattern which happens to be expressible in Haskell, and which is supported by libraries:
"Haskell's built in support for monads is split among the standard prelude, which exports the most common monad functions, and the Monad module, which contains less-commonly used monad functions. The individual monad types are each in their own libraries and are the subject of Part II of this tutorial."
https://wiki.haskell.org/All_About_Monads#Monad_support_in_Haskell https://wiki.haskell.org/All_About_Monads#Monad_support_in_H...
The fact that monads are used to implement parts of the language doesn't make them a core part of it. Techniques used in implementation aren't the same as language features.
- lkitching 7y agoI don't think this is true, do notation (see https://www.haskell.org/onlinereport/haskell2010/haskellch3.html#x8-470003.14 https://www.haskell.org/onlinereport/haskell2010/haskellch3....) specifically depends on the Monad typeclass and exists as syntactic sugar for monadic operators: > A do expression provides a more conventional syntax for monadic programming
- sullyj3 7y agoIs do notation a language feature?
- verttii 7y agoit's syntactic sugar
- jeremyjh 7y agoA pedantic distinction without a practical difference. Everyone who learns Haskell learns about Monads.
- hope-striker 7y agoThe Haskell 2010 Report mentions monads all over the place, both in the language and library sections. A Monad instance is literally the only way to do IO in standard Haskell. Monads get special syntax in the form of do-notation and, in an extension, monad comprehensions. It's undeniably a core feature of the language.