I'm just wondering whether there's a concise term for something that's both a monad and a comonad. I've done some searching, and I know these structures exist, but I haven't found a name for them.
Is there a term for a monad that is also a comonad?
523 Views Asked by qbeightol At
2
There are 2 best solutions below
0
sclv
On
Such a creature, subject to certain conditions, is sometimes called a "Hopf monad" or a "Bimonad" (http://ncatlab.org/nlab/show/Hopf+monad).
However, this also requires fulfilling a number of axioms regarding distributive properties, and I haven't seen it come up in a programming context in any particular way.
Related Questions in HASKELL
- Typeclass projections as inheritance
- How to generate all possible matrices given a number n in Haskell
- Is there a way to get `cabal` to detect changes to non-Haskell source files?
- How to have fixed options using Option.Applicative in haskell?
- How can I create a thread in Haskell that will restart if it gets killed due to any reason?
- Automatic Jacobian matrix in Haskell
- Haskell writing to named pipe unexpectedly fails with `openFile: does not exist (No such device or address)`
- Why does Enum require to implement toEnum and fromEnum, if that's not enough for types larger than Int?
- Non-exhaustive patterns in function compress
- How to get terms names of GADT in Template Haskell?
- Implementing eval() function with Happy parser generator
- How to count the occurences of every element in a list in Haskell fast?
- In Haskell, what does `Con Int` mean?
- Extract a Maybe from a heterogeneous collection
- Haskell, Stack, importing module shows error "Module not found"
Related Questions in OCAML
- Why can't dune recognize ppx_jane?
- Is there a function that returns a list of values with specific type in OCaml?
- How to use menhir to parse into a GADT expression?
- How to generate Menhir .automaton files with dune in OCaml?
- matching multiple patterns at once in ocaml
- What causes this type mismatch when applying a functor?
- What is the right way to put type declarations in OCaml signatures
- Obtain an interpretation of unbounded variables using Z3 in OCaml
- Using infix operator in the module in OCaml
- Do any OCaml compilers take advantage of the unspecified order of evaluation of let ... and bindings?
- Nesting algebraic handlers from separate modules
- Can I define pattern synonyms in OCaml?
- OCaml functions on uncertain data types
- Module unavailable when compiling another file that uses it in OCaml
- Can't understand the syntax in ocaml code
Related Questions in CATEGORY-THEORY
- The fixed point functors of Free and Cofree
- Does a natural monoidal structure on copoints of a Functor induce a Comonad?
- Sum of indexed functors
- Are type-level functors just functors in the 2-category of Hask?
- Defining Categories and Category Laws in Haskell
- Is there a term for a monad that is also a comonad?
- Open Type Level Proofs in Haskell/Idris
- Initial algebra for rose trees
- Real-world applications of zygohistomorphic prepromorphisms
- Equivalence relations are to Groups, as partial order relations are to...?
- What type corresponds to a xor b in type theory?
- If Either can be either Left or Right but not both, then why does it correspond to OR instead of XOR in Curry-Howard correspondence?
- Is an identity functor in Category of sets a function application?
- Matrix as Applicative functor, which is not Monad
- List based on right Kan extension
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
As far as I know, there is no term to define it because a monad-comonad would enforce nothing: you can always do a
returnto get in or anextractto get out.As types are there to enforce some constraints, a too permissive constraint wouldn't be of any use. As no one would use it (except for the identity), no one probably bothered to name it.