4 ms·
You claim that OCaml programmers are already versed in category theory but that’s not correct. The first exposure usually comes with concurrency libraries such
by TurboHaskal 7y ago
You claim that OCaml programmers are already versed in category theory but that’s not correct. The first exposure usually comes with concurrency libraries such as Lwt which isn’t very old nor in the standard library, and it provides syntax sugar so you can start being productive right away.
You can write perfectly fine production OCaml programs without knowing what a monad is. Some may, but a lot of OCaml devs don’t care about them.
- hope-striker 7y agoThis is correct, and in contrast to Haskell, where monads are a core part of the language (they are used in the definition of do-notation and list comprehensions) and currently the mainstream way to do IO.
- notfashion 7y agoThis 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.
- contravariant 7y agoBy this definition Monads are also a core part of C#, they're not used to do IO but the async/await, IEnumerable, null-safe operators ('?.') are all implementations of Monads (not by coincidence), and above all you have the Linq syntax that you can extend to all of them and any other Monads you care to define. Yet I imagine most C# programmers have little to no formal understanding of Monads (although quite a few probably do at least know about the link).
- deleted 7y ago[deleted]
- kccqzy 7y agoThat's true, it's just that it's culturally inappropriate to use the full power of monads in C# outside specific scenarios like Linq.
- contravariant 7y agoWell that really depends on who's working on it. In my opinion Linq isn't so much the only appropriate way to use monads but rather the most convenient way to demonstrate their full power.
- hope-striker 7y agoSorry, I'm only vaguely familiar with C#, but maybe you're right, if they get sugar in the form of LINQ syntax. But regarding async/await, (?.), etc., a language doesn't have special support for vector spaces just because it has many vector spaces in it - and every language has many vector spaces in it.
- yodsanklai 7y agoYou can also use monads without knowing anything about categories. It's just a convenient programming pattern.
- lonelappde 7y agoIt's plainly obvious that the GP poster made no such claim about category theory, and the OP post states several times that category theory is merely tangential to the topic.