Talk:Monad (functional programming)/FAQ

Q1: This article is confusing, frustrating, etc. Can't you explain the concept better?
A1: On the margins, probably, and further help is always welcome. However, the monad concept itself is somewhat advanced, and the goal is to clarify without sacrificing reliability. Article editors have reached a consensus that we want to avoid the "monad tutorial fallacy", where we introduce loose metaphors, analogies, or arbitrary examples. These are often sourced to blogs without any peer-review too, and as helpful as individual readers may find them, they detract from encyclopedic coverage of the topic.
Q2: Why does the article use so much Haskell?
A2: The prevalence of Haskell here is partly a compromise and partly an illusion. The Haskell community has had a central role in applying and popularizing monads for functional programming. As a result, many of the idioms and available sources are written with Haskell programmers in mind. That said, editors have attempted to shift several sections of the article to a (rough-draft) pseudo-code. With no Wikipedia guidelines for functional pseudo-code though, it often mimics mathematical notation, but so does Haskell. Furthermore, when no clear convention from math exists, the pseudo-code prefers Haskell idioms to entirely arbitrary syntax.
Q3: Some of the code snippets look very strange to me and aren't correct Haskell, Javascript, etc. Should I fix them?
A3: With the caveat to check they aren't actually pseudo-code first. If they do turn out to be pseudo-code, please still be bold and make improvements; just remember the purpose of pseudo-code is to clarify the concept further for human readers, not satisfy the specifics of an existing programming language.
Q4: I now understand monads and want to share my insight. Can I add my own explanation or example to the article?
A4: Of course, but this article does tend to attract clutter, a borderline how-to style (see WP:NOTHOW), and excessive WP:EXAMPLES. As a result, first try to make your changes in a language-agnostic way (e.g. a diagram or general prose). If you still want to include a code example, try to expand one of our existing sections rather than duplicating functionality that's already discussed. Also, use pseudo-code if you can, but barring that, prefer a well-known language not already shown in the article or Haskell. Whatever your language of choice, don't forget to explain any idioms not already introduced in the article for the reader.
Q5: So a monad is just the same thing as some of the other terms in the article, like "class", "monoid", etc.?
A5: Probably not. In both mathematics and functional programming, definitions are very rigorous. And while the article is still a work-in-progress, the definitions and logical statements are mostly stable, especially outside of examples or code snippets. Errors are always possible, clarifications are always good, and discussions here on the talk page are always welcome. If you're still building up an intuition for the concepts in this article though, it's best to read carefully and not assume concepts are equivalent unless explicitly stated.
Q6: I have the free time, interest, and knowledge; how can I best improve this article?
A6: As always, be bold but willing to discuss revisions. If you want to factor in the thoughts of previous editors, however, your best bet is probably to consult any to-do list here on the talk page, followed by skimming the talk archives.

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.