Not signed in (Sign In)

Start a new discussion

Not signed in

Want to take part in these discussions? Sign in if you have an account, or apply for one below

  • Sign in using OpenID

Site Tag Cloud

(0 1)-category-theory 2-category 2-category-theory 2-monad abelian-categories accessible adjoint algebra algebraic algebraic-geometry analysis arithmetic beauty book bug bundle categories category category-theory chern-simons-theory cohesion cohesive-homotopy-type-theory cohomology combinatorics complex-geometry conference connection constructive constructive-mathematics cosmology database deformation-theory descent differential differential-cohomology differential-geometry duality enriched enriched-category-theory enrichment examples factorization-system fiber fibration forms foundation foundations functional-analysis functor galois-theory gauge-theory gebra general topology geometric geometric-quantization geometry gravity group-theory higher higher-algebra higher-category-theory higher-geometry higher-lie-theory higher-topos-theory history homological homological-algebra homotopy homotopy-theory homotopy-type-theory homtopy-type-theory infinity-groupoid infinity-topos integration-theory internal-categories kan lie-algebras lie-theory limit limits linear linear-algebra locale localization localization-theory logic manifolds mathematics measure measure-theory mechanics meta modal-logic model model-category-theory monoidal monoidal-category monoidal-category-theory morphism n-groups newpage noncommutative noncommutative-geometry object operator operator-algebra order-theory philosophy physics predicative pretopology pro-object probability-theory quantum quantum-field-theory quantum-mechanics quantum-physics quantum-theory question representation representation-theory riemannian-geometry set set-theory sheaf simplicial site space stable-homotopy-theory stack string string-theory subobject supergeometry symplectic-geometry tannaka tensor terminology theory topologica-quantum-field-theory topology topos topos-theory torsor tqft type type-theory universal weighted-limit

Vanilla 1.1.10 is a product of Lussumo. More Information: Documentation, Community Support.

Welcome to nForum
If you want to take part in these discussions either sign in now (if you have an account), apply for one now (if you don't).
    • CommentRowNumber1.
    • CommentAuthorUrs
    • CommentTimeSep 6th 2012
    • (edited Sep 6th 2012)

    started monad (in computer science)

    (also added it as one line to the big table at computational trinitarianism)

    • CommentRowNumber2.
    • CommentAuthorMike Shulman
    • CommentTimeSep 6th 2012

    I’ve never heard of a field called “programming theory”. Perhaps computer science would be what you want? Or if you want to specifically refer to the formal study of programming languages within computer science, I think people call that something more like “programming language theory”, although I’m not sure if I’ve seen it written out that way rather than just “PL theory”.

    • CommentRowNumber3.
    • CommentAuthorUrs
    • CommentTimeSep 6th 2012

    Yes, I googled around a bit before I created that entry, and noticed that. But I wanted the entry to be called this, so that it fits into saying

    Because the alternative

    looks really bad. ;-)

    But, okay, I admit that I am being whimsical. I’ll be following suggestions for how to make up for this sin.

    • CommentRowNumber4.
    • CommentAuthorMike Shulman
    • CommentTimeSep 6th 2012

    My suggestion is to rename the page to monad (in computer science) and delete the page programming theory.

    • CommentRowNumber5.
    • CommentAuthorUrs
    • CommentTimeSep 6th 2012

    All right. Done.

    • CommentRowNumber6.
    • CommentAuthorUrs
    • CommentTimeSep 6th 2012

    (By the way, I have changed it also in this thread here. Just as a note to future readers, who may wonder what we are talking about…)

    • CommentRowNumber7.
    • CommentAuthorTodd_Trimble
    • CommentTimeSep 6th 2012

    For a reference, I’m betting that Dan Piponi has lots of good stuff at his blog, although programming theory or whatever-you-call-it isn’t my domain.

    • CommentRowNumber8.
    • CommentAuthorUrs
    • CommentTimeSep 6th 2012

    Yes, I saw an exposition by Dan Piponi on monads in computer science.

    • CommentRowNumber9.
    • CommentAuthorUrs
    • CommentTimeSep 6th 2012
    • (edited Sep 6th 2012)

    Hi Todd,

    now that I have more of a spare minute, I guess you were referring to my request in the entry “somebody please add a good reference”.

    So, yes, Piponi gives somehwhere a basic non-technical and pedagogical exposition of the example of how to encode functions with side effects in a functional language. I suppose that’s a good reference for those looking for this kind of thing, but what I would like to see is not this kind of exposition.

    I am longing to find a reference that gets to the point right away, with precision and clearly. I know what a monad is. I know what a type system is. I have trouble reading Haskell code though. So I would like to see an authorative reference that goes like this:

    “A monad in a typed functional programming language is” and then bang-bang-bang the definition. Like: “is an endomorphism of the type universe such that…”. Well, that’s roughly what I put into the entry. I just would like to point to some technical paper that actually says this.

    That reminds me; I was wondering if I could point out the Wikipedia entry Monad (functional programming) as an illustrative example for how not to write Wiki entries:

    • first paragraph of the Idea-section: means nothing to somebody who doesn’t already know what the entry is about, and I think not useful even if one does

    • second paragraph of the Idea section: we hear what the topic of the entry is good for, but we still don’t know what the topic is.

    • third paragraph of the Idea section: that paragraph is actually where the definition is hidden! This is the single most useful paragraph of the whole entry. Trouble is, on first reading I had given up on the Idea section at this point already, so I didn’t even see this. Also I didn’t expect the Definition to be hidden there.

    • next comes a paragraph on history. The reader (who didn’t make it to the last part of the intro) still has no idea what the topic of the entry is, but now he learns many names of people who invented it.

    • then “Background and notational conventions” provides neither background nor notational conventions. Nor would this seem to be what the reader needs now.

    • Now motivating examples. That might of course be a good way to introduce a complicated subject – only that the subject is not actually complicated, its abstract definition is simpler than any of its examples. On first reading of the entry, this whole motivating example was entirely Chinese to me. (Now that I understand what’s going on, I can read it.)

    • same for the next motivating example

    • so we are now one third into a long entry and first time I arrived here I had still no idea what the entry was trying to tell me. But now at least the announcement: “formal definiton”. So I expect Definitions: X is Y such that Z. It’s roughly like that, but still not really focused. Is the first sentence there even sensible: “A monad is a construction that, given an underlying type system, embeds a corresponding type system (called the monadic type system) into it”?

    • Next comes lots of Haskell code… and so I give up.

    It was after such experiences that I thought: please, somebody point me to a sober, concise technical definition.

    • CommentRowNumber10.
    • CommentAuthorTodd_Trimble
    • CommentTimeSep 6th 2012

    A monad in a typed functional programming language is

    Well, it’s funny, because earlier I thought I had read somewhere on Piponi’s blog exactly the type of crisp thing you are looking for, and now I can’t find it! But the idea was, roughly as I remember it, to cast the Kleisli category construction into typed functional programming language.

    You might try asking on MO or something, if you can’t get satisfactory answers here.

    • CommentRowNumber11.
    • CommentAuthorUrs
    • CommentTimeSep 6th 2012
    • (edited Sep 6th 2012)

    Ah, I see. So I have checked again: what I had seen before on Dan Piponi’s blog is this here:

    Now I see that there is also a link to:

    Is that maybe what you are thinking of? (I still need to look through it.)

    • CommentRowNumber12.
    • CommentAuthorTodd_Trimble
    • CommentTimeSep 6th 2012

    No, I don’t recognize what I saw in either of those.

    It may have been the more succinct formulation (that I think I saw, involving two term-formation rules) was still embedded in the middle of fluff, but my memory is that you might have liked it. Sorry I’m not being more helpful.

    • CommentRowNumber13.
    • CommentAuthorUrs
    • CommentTimeSep 6th 2012
    • (edited Sep 6th 2012)

    Sorry I’m not being more helpful.

    No that is helpful, thanks. This way I know what to look for. I just need to finish something else first, so I’ll continue this quest here a little later.

    (Well, I guess Mike could write an account to all our heart’s content. But there must exist a good account somewhere already, right? :- )

    • CommentRowNumber14.
    • CommentAuthorMike Shulman
    • CommentTimeSep 6th 2012
    • (edited Sep 6th 2012)

    Yeah, there must, mustn’t there? I look forward to hearing about one when you find it.

    I touched the page briefly, linking to strong monad. Also is a comonad, not a monad, right? It’s and Π that are the monads.

    • CommentRowNumber15.
    • CommentAuthorFinnLawler
    • CommentTimeSep 7th 2012

    I’ve edited the Idea section a bit, trying to make it a bit more intuitive. See what you think.

    I can’t think of an introduction to monads in programming that’s suited to mathematicians rather than programmers; I suspect we may have to write our own. The original reference would be Moggi’s thesis, I’ll try and find the exact reference and maybe a link.

    • CommentRowNumber16.
    • CommentAuthorUrs
    • CommentTimeSep 7th 2012
    • (edited Sep 7th 2012)

    Thanks Finn!

    By the way, we have syntactic category. I made it a hyperlink in your text.

    I like what you added, but now the entry takes quite a bit before it starts saying anything about what a monad in a programming language actually is. I would like the very first sentence of the entry to be such that the reader already gets an idea where the journey is actually going. Can you think of something very brief to put before what you just added. We need a sentence brief but accurate and genuinely, informative. Maybe:

    A monad in a programming language is a map then sends every type A to a new type TA equipped with a function return:ATA and a coherent rule to compose a function f:XTY with a function g:YTZ to a function XTZ.

    Something like this. And then we can explain all the relation to category theory etc. pp. I would suggest all that about props as types etc. pp should really go in a separate subsection. It should come after the main idea has already been stated.

    What do you think?

    (I’ll leave it at that now, have to call it quits.)

    • CommentRowNumber17.
    • CommentAuthorUrs
    • CommentTimeSep 7th 2012
    • (edited Sep 7th 2012)

    I have expanded and restructured the entry further. Check it out: monad (in computer science) .

    I tried to disentangle the idea in CS from the interpretation in CT, tried to have a brief crisp Intro-paragraph that already says it all, with the remaing comments on that split into two further subsections. In one I try to expand on the example of side-effects. Check if I did that decently. Feel free to edit further.

    There are still lots of grey links which make the entry look ugly. To remove at least one of them, I created a stub for programming language.

    • CommentRowNumber18.
    • CommentAuthorFinnLawler
    • CommentTimeSep 7th 2012

    Looks good! I have corrected a couple of typos, expanded on the TX=X×Q example, and added a reference to Moggi’s original article.

Add your comments
  • Please login, or your comments will be posted as "Guest".
     
     
     
     
     
    Type the two words.
     
     
    Get a new recaptcha
    Get an audio challenge
    Help
     
     
     
  • Format comments as (Help) (Help)