I figured out monads!

Monads are just objects which wrap a value and specify the methods which are applicable to it. Identity is the constructor M = Monad(v), Bind is the function application M.f().
Haskell is actually just backwards OOP without statements.

Attached: 1551720191655.jpg (5934x4081, 1.73M)

shut up nerd
post more gabu butt

>wrap a value
>specify the methods which are applicable to it
>the constructor M = Monad(v)
>function application M.f()
None of these sentences denote well-defined statements. Are you sure you understood monads?

This
No one cares about nomads, faggot

Just how many gabu do you need, faggot?

Attached: a-huge-pile-of-gabu.jpg (1358x923, 199K)

More than that pathetic amount

Why is the exposing her ass like that? For everyone to see?

Here we see how OOP can permanently cripple the mental capabilities of otherwise healthy programmers.

ventilation

Attached: 1555345387636.jpg (1280x720, 134K)

No dude, moan ads don't wrap values, they wrap types. A Maybe Num, for example, doesn't wrap a Num, it wraps Num itself. As for what *value* it wraps, *maybe* it wraps a Num, or *maybe* it doesn't, hence the name. A List Num doesn't wrap a Num either, it wraps Num itself, in a way that allows it to wrap zero or more Nums at once.

>wrap
>value
see

I don't have to speak in well defined sentences.

Nowhere did I say that you have to. Your sentences themselves don't have to be well-defined, they just have to denote well-defined statements about well-defined objects. For now, all you've done is just spout some gibberish.

But if you're going to be a bitch about it, I'll elaborate.
In the common usage of the term as it applies to functional programming, a "value" is a member of a type of the kind *. To "wrap" a value means to be the value formed by applying some constructor to that value.

Imagine he smell.

>they just have to denote well-defined statements about well-defined objects. For now, all you've done is just spout some gibberish.
That's wrong. There's no need to talk in such a way that everything you say denotes well-defined statements about well-defined objects. That's too rigorous a standard to hold for colloquial discussion. It's sufficient to speak in such terms that those you talk to can understand what you're saying.

>constructor
see >To "wrap" a value means to be the value
What did you mean by this? Is "wraping" itself a value according to your definition?
>It's sufficient to speak in such terms that those you talk to can understand what you're saying.
It's actually nearly impossible to understand what he's saying with the proper context of what "monad" means. And I don't even believe that he himself understands what he's saying. That's why he needs to establish a well-defined context to talk about the random gibberish he wrote.

imagine

Attached: 3.jpg (148x289, 33K)

Only her husband, that is I, will see her butt like that.

Attached: gabu.jpg (576x512, 53K)

But I'm seeing her butt right now and I did not write your post.

Attached: 1556169742679.gif (480x432, 1.22M)

Monads just allow us to operate on an object without giving a fuck about the context e.g. if you use optional + flatmap in java to return a new optional. Using the monadic interface means you can just use flatMap to get the gooey inside rather than having to do things like optional.ifPresent() etc.

>What did you mean by this? Is "wraping" itself a value according to your definition?
I mean exactly what I said. To wrap a value is to be the value produced by applying a constructor (and it must be a constructor specifically, no other function will do) to the original value. X "wraps" Y if and only if X = C ... Y ... for some constructor C (not counting cases where parentheses or $ are used to ensure Y is curried into a function not curried from C, or to ensure other values are curried into Y prior to Y being curried into C, or both). I shouldn't have to explain this. Everyone knows what wrapping means. That's what it means in functional languages, and, though the specifics are obviously different, that's roughly also what it means in imperative and procedural languages. It's a little more convoluted in OOP, but even there, it's pretty much the same concept. I've never seen a context where "wrapping" a value means anything else. The meaning of "wrapping" is ubiquitous.
>It's actually nearly impossible to understand what he's saying with the proper context of what "monad" means. And I don't even believe that he himself understands what he's saying. That's why he needs to establish a well-defined context to talk about the random gibberish he wrote.
Maybe that's true, maybe not, but I reject the notion that the same can be said about my response to him. I may be wrong, and you're welcome to correct me if you can, but don't go acting like what I mean to say isn't at least blatantly obvious, regardless of whether it's right or not.

>but don't go acting like what I mean to say isn't at least blatantly obvious
It's actually not. "To "wrap" a value is to _be the value_..." makes no sense in English, assuming "wrap" means anything remotely similar to function application, which it does according to your definition. Do you mean "To "wrap" a value is to produce [an object of some kind] by [doing something]..."? Even if so, you still haven't come close to defining all of the random words in

GASP!
I DON'T USUALLY PERK UP TO JAPTOONS
BUT MY MY MY!

>Do you mean "To "wrap" a value is to produce [an object of some kind] by [doing something]..."?
No. I mean that to wrap value Y is to be value X where X = C ... Y ... for constructor C. In this case, saying something wraps Y and saying it is such an X as described are exactly the same claim. There is no "[doing something]" component, because constructors don't do anything. The value produced by applying a constructor is simply defined as a member of the type the constructor returned, and that member is named by the specific constructor application in question. Nothing is done to obtain the member; the member is already there, by virtue of the constructor being applied. Such is the defining characteristic of a constructor as contrasted against other varieties of functions.
>Even if so, you still haven't come close to defining all of the random words in
Doing so was not my intention, since that's not my post.

Wrong
Monads are monoids in the category of endofunctors

>to wrap value Y is to be value X where...
This is gibberish when interpreted in English. You should feel an immediate type error when you read it, assuming you understand English.
>There is no "[doing something]" component, because constructors don't do anything.
Syntactic application of a constructor is considered "doing something" in normal colloquial English, not that you'd be familiar with that.

>This is gibberish when interpreted in English. You should feel an immediate type error when you read it, assuming you understand English.
That's not correct. You're wrong about that. There's nothing wrong with saying "to [verb particle] is to [verb particle] [further conditions]." There's nothing wrong with saying "to run is to walk very quickly" (verb particle: run; verb particle: walk; further conditions: very quickly). If you can't parse sentences of that form, you're simply illiterate.

Didn't even read your post but I already know it's just filled with pathetic excuses. If you want to write it in proper and well-defined English, you would say "A value X wraps a value Y if and only if...", or "For a value X to wrap a value Y such and such conditions have to hold...", or "To wrap a value X means to have a value Y such that...". What you wrote down isn't equivalent to these examples in any non-butchered form of English.

Indeed, OO is the master paradigm of programming. Jow Forums hates it because they are dropouts who will never amount to anything.

Attached: A470053D-8860-4934-89B1-30E872A7343E.png (1280x738, 1.23M)

>What you wrote down isn't equivalent to these examples in any non-butchered form of English.
Yes it is, you just either can't read or are pretending you can't read.
Anyway, as I said, to wrap value Y is to be value X such that X is the value named by the application of some constructor to Y. Contrary to your delusional insistence, that definition is by no means gibberish, and even if it were, I've provided an ample selection of alternative phrasings you might find clearer (one of which you just quoted word-for-word without realizing it), and you've addressed none of them. I refuse to believe you don't understand what I mean by "wrap" at this point, so, since you either absolutely do understand it or are intellectually incapable of conversation, do you have any further questions or complaints about my original post you took issue with ()?

>to wrap value Y is to be value X
This is the only part of your post I read, but I see you still can't seem to implement proper type checking for your brain. I recommend just reading my examples over and over again until you get it. Can't really think of anything else that might help.

Like I said, you're simply wrong. The only thing incoherent about that sentence you quoted is that the rest of the sentence is missing from the quote.

Anyway,
>I refuse to believe you don't understand what I mean by "wrap" at this point, so, since you either absolutely do understand it or are intellectually incapable of conversation, do you have any further questions or complaints about my original post you took issue with ()?

Any sentence which begins with the words I quoted is guaranteed to be incoherent simply by virtue of starting with those words. Didn't read the other post you made, as I can see just by glancing over it that it's just you denying obvious facts again.

>Any sentence which begins with the words I quoted is guaranteed to be incoherent simply by virtue of starting with those words.
That's incorrect.

It's obviously correct if you have a working brain which can properly distinguish between equivalent English sentences.

That's not the issue here. You're the one who doesn't know English in this exchange, not I.

Anyone who can actually read, and has even the most minimal grasp of algebra, would be able to grasp the meaning of what I said.

Actually, even the most rudimentary understanding of English and algebra makes it impossible to interpret your sentence in the context of proper English.

It's okay, cry about your illiteracy some more. I'm sure someone here will care enough to listen.

This is what haskell does to your brain

Attached: 1555290695812.jpg (1920x1080, 205K)

Kek, I don't even use Haskell, I just know it. This guy on the other hand doesn't even know enough English to understand the words "is to be."

Some day you'll remember this conversation and realize just how wrong you were in this exact moment of time. It's fine though, we all had the reading skills of a child at some point in our life.

I don't actually know or use Haskell. I just know how to properly define mathematical terms and how to properly read English.

>It's fine though, we all had the reading skills of a child at some point in our life.
Keep telling yourself that if it makes you feel better. I hope you realize that if you're old enough to be here, that point in your life should be long gone. If you can't even understand the meaning of three consecutive two-letter words, you need to go back to Kindergarten.

>I just know how to properly define mathematical terms and how to properly read English.
>can't even read "is to be"
*wheeze*

Attached: lole!lole!lole!.png (594x573, 357K)

All of them.

Attached: 1450565834745.jpg (1440x810, 154K)

Lacking an intuitive understanding of the distinction between the syntactic form "is to be" and the broken semantics entailed by its improper use in the context of your sentence is a dead giveaway of a deeply and fundamentally flawed understanding of English. You deciding to post some shitty "rules" from a textbook as an argument also supports this interpretation. Of course you'd feel the need to do that, since you lack the proper intuitions anyone with a legitimate knowledge of English takes for granted. I'm starting to doubt whether it's an actual person writing these posts at this point.

Attached: sanae_wow.png (302x227, 29K)

Please continue children. But understand your both wrong

Attached: 1556856875278.jpg (720x1080, 186K)

op is a retard
a monad (as far as FP is concerned) is just a data type m which uses the functions
return :: a -> m a
bind :: m a -> (a -> m b) -> m b
where those functions follow the monad laws

this is only interesting because this specification of bind forces monadic actions to be evaluated in a certain order

This. Just ascend to using trillian logic instead of boolean logic.

Gabu does NOT have legs like that. The image is a lie.

>Monads are just objects
That's an analogy only an OOPtard would make, but okay
>which wrap a value
sure
>and specify the methods which are applicable to it.
And you failed completely.
>Identity is the constructor M = Monad(v),
Uh, sure
>Bind is the function application M.f().
And once again failed completely. That's not even right in OOP, it's called a method not a function application you illiterate.
>Haskell is actually just backwards OOP
Fuck does that even mean?
>without statements.
Do you even know what a statement is? There are OOP languages that don't have statements.

>broken semantics entailed by its improper use
Again, you just think the use was improper because you are a mental infant and too illiterate to grasp the full spectrum of correct use for three little words.
It's okay, not everyone can continue developing meaningfully beyond age four.
>deciding to post some shitty "rules" from a textbook
Actually I wrote them myself. Unlike some people here, I'm actually capable of expressing my thoughts rather than just positing empty and unfounded criticisms toward the expressions of others.

This machine translator you're using is pretty advanced, but it shat itself really hard on that one part. Look into this bug whenever you have some free time. I'm sure it'll serve as a nice exercise in learning English.

Well shit, now I've done it, I've gone and broken him. He's seeing imaginary machine translators.

>Monads are just objects
They're types
>which wrap a value
They're required to be able to wrap a value (with return), but not every "m a" wraps a value (Nothing :: Maybe Int is not wrapping a Int)
>and specify the methods which are applicable to it.
Everything you've said until now is something that Haskell does with newtypes, which are not always monads (e.g. ZipList)

return x = [x]
bind (x:xs) f = (f x):(bind xs f)
bind [] f = []

wait shit i fucked that up

return x = [x]
bind (x:xs) f = (f x)++(bind xs f)
bind [] f = []

I want to jump into the Gabupile