Тёмный

Monads and Gonads 

Google TechTalks
Подписаться 346 тыс.
Просмотров 146 тыс.
50% 1

Google Tech Talk
January 15, 2013
(more info below)
Presented by Douglas Crockford
ABSTRACT
The wonders of monads are finally revealed without resorting to Category Theory or Haskell. It turns out that monads are trivially expressed in JavaScript, and are one of the key enablers of Ajax. Monads are amazing. They are simple things, almost trivially implemented, with enormous power to manage complexity. But understanding them is surprisingly difficult, and most people, once they have that ah-ha moment, seem to lose the ability to explain them to others.

Опубликовано:

 

26 сен 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 169   
@LukeVanIn
@LukeVanIn 8 лет назад
GoogleTechTalks: The only multi-billion dollar company sponsored talks by leading experts, filmed on VHS tape in a damp parking garage.
@kalekold
@kalekold 5 лет назад
How it should be.
@WMTeWu
@WMTeWu 9 лет назад
I think The Curse is holding...
@csbnikhil
@csbnikhil 3 года назад
Hahaha, but sad. I guess people never really understand what it is, just that they get used to using it. This could explain the existence of that curse.
@driziiD
@driziiD 4 года назад
i'm convinced that douglas crockford has figured out programming, this, and his frontend masters course have convinced me of this
@jingoringo
@jingoringo 4 года назад
The natural response to this talk is: do u have the COGONADS to understand COMONADS?!
@robertoprince6804
@robertoprince6804 8 лет назад
Doug said in a Google Talk "...go to Bing and Google for..."
@NicholasShanks
@NicholasShanks 6 лет назад
He's definitely just trolling the audience.
@emstudios14
@emstudios14 3 года назад
Each time I listen to Douglas Crockford, I always get more inspiration on JavaScript. This is a brilliant tech talk on Monads.
@danielearwicker
@danielearwicker 10 лет назад
10:51 'M' means 'large plastic bag containing...'. 't' means 'small bag of peanuts'. 'u' means peanut. So 'M t' means 'large plastic bag containing small bags of peanuts' and 'M u' means 'large plastic bag of peanuts'. The thing in the middle '(t -> Mu)' means 'open a bag of peanuts and empty it into a big plastic bag'. So the whole thing says: "take a large plastic bag containing many small bags of peanuts, open each bag of peanuts and empty it into another large plastic bag, and you will end up with a large plastic bag full of peanuts." No mention is made of what happens to all the empty leftover bags, but don't worry: they are automatically recycled (unless you're using C/C++).
@ksysinfo3465
@ksysinfo3465 8 лет назад
+Daniel Earwicker Brilliant!This is the single must intelligent and comprehensible thing anyone has ever said about monads. Of course, you do know that volatilizing the the first Crockford law of monad pedagogy (maybe) considered harmful.
@ulilulable
@ulilulable 7 лет назад
Or, in the case of the reverse state monad: "Open the bag waiting for peanuts and get its contents from the future. Then you will have had a small bag of peanuts to begin with."
@MrMirville
@MrMirville 3 года назад
Monads transform anybody presenting them into a guru : bad, bad, bad. I would give them another name : serializable, or flowable types, as they can occur or not, as they can occur several times with different values. You can eat and make burritos without learning Spanish but knowing a little but of Spanish does help a lot to meet those who make them best.
@panesofglass
@panesofglass 9 лет назад
The notion that the IO monad is useless is incorrect for Haskell, though probably true for an untyped language like JavaScript. The IO declares that the computation performs an IO side-effect, and any other computations need to take this into account.
@odw32
@odw32 9 лет назад
Ryan Riley Crockford explaining monads is like a taco expert explaining buritto wraps. "Burittos are just like tacos, but with a soft shell". Completely wrong in the eyes of someone who likes burittos, but a helpful pointer for a taco lover who has never tasted a burrito and desperately tries to imagine the concept. I think his perspective on the subject is valuable, although his lack of humility and fanboyism is quite off-putting sometimes.
@JeremyAndersonBoise
@JeremyAndersonBoise 9 лет назад
Orian de Wit As a taco lover, this talk is relevant to me, can you explain what is a burrito? I agree with the arrogance part, but every technology needs a few fanatics or it won't gain traction, so I forgive that. This is great for those of us new to functional programming.
@LuisFernandoValenzuela
@LuisFernandoValenzuela 8 лет назад
Orian de Wit real tacos don't have "shells" but a tortilla, which is soft. but I get your point, I don't want to start a pointless flame war😂
@rudevich
@rudevich 11 лет назад
He talks not about programming without highlighting, he shows a really interesting convept of highlighting - scope-oriented highlighting.
@HumanoidTyphoon91
@HumanoidTyphoon91 8 лет назад
15:46 I want all my global level stuff to be white... TRIGGERING INTENSIFIES!
@codyromano7868
@codyromano7868 10 лет назад
"I don't use syntax highlighting because it's for kindergarteners and I'm an adult." This comment doesn't offend me, but I can see how it would alienate many developers. Crockford should've been humble and considerate of his audience instead of adding fuel to a meaningless flame war about which editor or coding style is "correct."
@JLRishe
@JLRishe 9 лет назад
If he wasn't telling people what the One True coding style is, he wouldn't be Douglas Crockford.
@codyromano7868
@codyromano7868 9 лет назад
Fair enough :)
@Skyturnip
@Skyturnip 9 лет назад
He's a dick. Pure and simple. Implying that people who use syntax highlighting are 4 years old. Then he goes on to say how great highlighting is... Utterly dumb guy
@Skyturnip
@Skyturnip 9 лет назад
***** " he takes himself too seriously, thus offending those who take their-selves too seriously." Troll
@Skyturnip
@Skyturnip 9 лет назад
***** "absorb the info" ... Haha. You're clearly a robot.
@WMTeWu
@WMTeWu 11 лет назад
My piece of advice for confused ones: Read "Learn You a Haskell for Great Good!" chapters 11 - 13 instead trying to appreciate this talk
@nerdy_cat
@nerdy_cat Год назад
IT HAD TO BE SAID...
@griof
@griof 7 лет назад
the best way I understand monads not using maths is: "A closed batch of code in which you have user defined functions going from pure functional into the monad and one single function to compute things from out of the monad within the monad (Bind function)". Simpler words: "Take a monadic value -> Bind it in order to "extract" (actually compose) the non-monadic value -> Use a function to make some computation on this value and be sure you function ends by wrapping the result into the monad -> Now you have a monadic value. Repeat from step one 'till you do all computations you desire" Not so dificult.. isn't it? I know I haven't talk about the return function or laws or whatever complicated concept. I got to explain this to my workmates, do you thing It is a good way to do so?
@tiny4nick
@tiny4nick 10 лет назад
Promises were known to be nomads much time before Douglas realized it. For example, Don Syme implemented async computation in F# in nomadic style and he said he adapted the idea from Haskell.
@MrSimax99
@MrSimax99 6 лет назад
nomads?
@emeka1978
@emeka1978 11 лет назад
Gotta love this man. A real living legend.
@KevinBeal
@KevinBeal 11 лет назад
Is it really true that "grown up programmers" don't use syntax highlighting? Or is it that dinosaurs learned programming before syntax highlighting was popular? I'm not a great programmer, but I can find the code I want much faster with highlighting. And maybe I'm just a n00b or something, but I actually like it being fun & colorful :)
@aidanprattewart
@aidanprattewart 4 года назад
I mean, I judge my code off of how pretty it looks, so if you're a noob, I don't know where that puts me.
@ryanleemartin7758
@ryanleemartin7758 4 года назад
minimal highlighting is good. fruit salad highlighting is noisy
@KevinBeal
@KevinBeal 4 года назад
I've since made my editor only highlight strings and comments to differentiate anything that could look like code from actual code. I like it so far.
@epgui
@epgui 2 года назад
@@KevinBeal There's nothing wrong with syntax highlighting. Do whatever makes you productive.
@jamma246
@jamma246 5 лет назад
On Haskell: 8:10 _"And it kind of works.... except it's kind of hard"_ Is it really that hard though, or is it just a bit foreign to people who have learned to program in a different way? I found the elegance of the language a decent pay off to invest time into, and once it clicks it's really satisfying and not actually that hard to program in.
@christopherthorn8356
@christopherthorn8356 9 лет назад
"Caching is a deal with the devil: we have something which is likely to be wrong, but is sometimes right, and we don't know when it transitions from being right and wrong. With memoization, that never occurs: once it's memoized it's right and it will always be right" - D.C. 5:02
@DannyGratzer
@DannyGratzer 11 лет назад
What a monad is (and this talk did a not so nice job explaining) is a type/object/whatever with 2 operations. `bind` which works by taking a function `a -> m b` and the monad object `m a` and combining them to produce a new monad object `m b` and then another function `inject` which sticks an arbitrary object `a` into a monad `m a`
@JonasAlmeida0
@JonasAlmeida0 10 лет назад
link to Crockford's github project: github.com/douglascrockford/monad
@idemchenko-js
@idemchenko-js 5 лет назад
This is yet another failed explanation of monads. Sorry. But it is. Monad is not an object. It is not an object with a bind method. This is an idea, first of all. An interface, if you wish. Monad is a way of describing a sequential computation within a certain context. This is a mathematical structure, first of all. Category theory helps a lot to remove the noise of the poorly designed language and look into a pure structure. I would disagree with the statement that Haskell doesn't always go right. GHC points exactly at the problematic point and sometimes may even suggest a solution. The message is not opaque, it says "argument a1 expected to have X type but it is of a Y type". A type system is the set of constraints on top of your untyped language that guarantees the correctness of your code.
@alexk6745
@alexk6745 5 лет назад
Completely agree that this is a failed explanation. The main problem is that he even has not explained a problem. The 2nd problem is just he assumes a lot that people have understood him and continues to talk further loosing the people. No one in auditory asks the questions as no one wants to look stupid. I watched this ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-ZhuHCtR3xq8.html video and I lost at 36.40. From this video I understood they wanna set of chained operations on an object. The only thing is not clear to me why is in RxJS in v 6. decided to go away from chaining and created the .pipe method ?
@idemchenko-js
@idemchenko-js 5 лет назад
@@alexk6745 my assumption would be that '.pipe' puts emphasis on pure functions, rather than '.prototype' and 'this'. Once I took a glimpse at how would one build a custom operator. I am far away from being an expert at this, but it looked like a simple function composition. To be honest, I always try to avoid 'this' in JS as much as possible and from this premise '.pipe' looks fine to me.
@rostislavsvoboda7013
@rostislavsvoboda7013 11 лет назад
My advice: Going through some more monad-related material definitely helps to appreciate this talk! Really.
@Verrisin
@Verrisin 6 лет назад
60FPS in 2013? damn, talk about being ahead of time! Awesome. I noticed right away and was very pleasantly surprised! - ok, I'm 40s in, now let's see what is it actually about. XD
@stozwald
@stozwald 11 лет назад
He says that JavaScript was the first mainstream language to have closures, but Perl got there a couple years earlier. I wonder if he doesn't know that Perl has closures or he doesn't know that it's mainstream. I do get tired of language partisans (to include several of Perl's bigger cheerleaders) acting like they don't know there are any languages besides C (too low-level), Lisp (too weird, I suppose), Java (too verbose), and whatever their personal fave is.
@davorb
@davorb 11 лет назад
This was a really great talk.
@someman7
@someman7 11 лет назад
Everyone can use a computer, and some of those can program, but to be a computer scientist, you need math, because it is - like most other sciences when you go deep enough - based on math. So, it's like saying statistics or physics is hijacked by mathematicians. As for Linux, it only matters for efficiency on which level you abstract things (HW, OS, or language). I'm talking about ease of use. Finally, I'm not defending JS which isn't a lang which I particularly like, let alone a functional one.
@iraasta
@iraasta 10 лет назад
Erlang had lexical closures ages before JavaScript. Even ages before NetScape existed
@edgeeffect
@edgeeffect 9 лет назад
+Krzysztof Wende Yes... but Erlang isn't really a "mainstream" language, is it?
@someman7
@someman7 11 лет назад
19:00 is method chaining. I find it hard to believe that monads are simply objects/closures.
@dermuiker
@dermuiker 10 лет назад
oh god i am noob
@dragoran149
@dragoran149 4 года назад
Just looks like the decorator pattern with fluent interface to me...
@someman7
@someman7 11 лет назад
Why ignorance? It's math. The reason functional programming is important nowadays is scalability. If you continue using imperative programming languages in the concurrent age, I'm sure you're going to have a harder time with that, than I do with my side-effect evasion.
@epgui
@epgui 2 года назад
If you're trying to understand monads, look for Graham Hutton's videos instead. You probably don't *need* to learn haskell to understand monads, but I think learning both at the same time is actually easier than trying to learn monads in the context of javascript.
@TheWarriorScholar
@TheWarriorScholar 7 лет назад
this dude is an OG fosho!
@hotbelgo
@hotbelgo 10 лет назад
Wow - that was tough, but lovely to hear how modern JS remains
@RogerKeulen
@RogerKeulen 11 лет назад
Yep, great talk ! Very clear and understandable.
@rostislavsvoboda7013
@rostislavsvoboda7013 11 лет назад
Because javascript is much much more that just the stuff that makes a web page looks good.
11 лет назад
Definitely one of the most interesting tech-talks I've seen in a while - very eye-opening inspiring stuff! One the concurrency part: I guess games in their essense must classify as turn based systems - Pondering how (if) one could use this approach for building a multi-threaded asynchronous game engine...
@Vectorh
@Vectorh 7 лет назад
I am still confused. This talk explains how we've been using monads and not knowing it, but I don't understand why I need to KNOW I've been using monads. In fact this makes them seem rather unremarkable and unimportant. Why again do we actually NEED them or need to know we're using them? When is it important to think in terms of Monads first, rather than accidentally using them?
@MrTyler918273
@MrTyler918273 6 лет назад
Yea this talk was not very helpful. The problem is that he is trying to show monads through example (which I agree is necessary to get a feel for them) but then he gives examples that seem trivial (especially in a language like Javascript). He was mostly showing the identity monad, which is just normal function composition. To appreciate monads I agree that you don't need to know how to program in Haskell, but you do need to understand what pure functional programming is. That means no mutable state, no side effects, etc. So here is my explanation of monads for those people: Remember that the power of functional programming is all about the composition of functions. Monads are kind of a way to supercharge function composition so that it does something extra as well. The bind function (>>= in Haskell) is just this supercharged function composition with added behavior. Each type of monad is like a context that you can apply to a computation to tell it what that extra behavior should be when things are composed using bind. For example in the Maybe monad the context is "this computation could fail (eg. dividing by 0)". The added behavior, then, when we compose these functions using bind is "If any of these computations fail, the whole thing fails". This allows you to quickly assemble a long string of computations without having to check for nulls or errors at every step. In the List monad the context is "this computation could produce any number of results". The added behavior when we compose these functions using bind is then "take all of those returned values and pass them all through the next function". This allows you to model non determinism or simply string together a bunch of growing (or failing, it could return 0 results) computations without the need for nested looping or explicit recursion. In the State monad the context is "this computation relies on a state that might change after each computation". The added behavior when we compose these functions using bind is then "thread that state (which might have been changed) through from each computation to the next one for me". This allows you to do computations as if there was some global, mutable state while still remaining pure. In the IO monad the context is "this computation has side effects/is impure". The added behavior when we compose these functions can kind of be thought of as "I understand that this result is impure so go ahead and pass it along to the next function anyway". This allows you to identify and acknowledge exactly what parts of your code are impure and separate it from the pure stuff. So in general these things can be done without monads, but using them abstracts away a lot of boilerplate and confusing patterns. When you see a new monad, just think "what is the context of one of these computations" and then "what is the extra behavior that is added to composing these kinds of computations". Also, if you can think of another context like this and some added behavior that would go along with composing functions of that type, then you can write your own monad. One more thing that makes monads especially useful in actual functional languages like haskell is that haskell has a special notation for monads called do notation. This idea of passing the result of the previous computation to the next using bind is a way of sequencing computations in order and do notation allows you to write functional monadic code in a very procedural way. Under the hood, though, it is still functional.
@MoonWho78
@MoonWho78 11 лет назад
Spoken like a true boss
@rostislavsvoboda7013
@rostislavsvoboda7013 11 лет назад
I paused every time I didn't get it and now I do get it :)
@CosmiaNebula
@CosmiaNebula 4 года назад
After hearing this talk my ovaries are now fully monadic.
@jingoringo
@jingoringo 4 года назад
perhaps they are comonadic?
@echatav
@echatav 11 лет назад
A monad is a monoid object in the monoidal category of endofunctors. Duh.
@someman7
@someman7 11 лет назад
My point is, concept of monads as presented here seems simple. I find it hard to believe that the only source of complexity (assuming one is familiar with functional programming) is (category) theory. Programmers don't need to study the theory of lambda calculus to be able to apply it, once it's explained to them another way, so I find it hard to believe that the same could've been done for monads but wasn't until Crockford. P.S. Apparently sequential execution can also be done using CPS.
@WMTeWu
@WMTeWu 11 лет назад
Very poor explanation of Monads. It confused me more then it helped.
@ASmallTurnip67
@ASmallTurnip67 9 лет назад
Helpful talk, but at 26:06 division by zero in JavaScript produces Infinity, not Nan...
@clumma
@clumma 11 лет назад
Over 10 minutes of analogies about how easy we're going to make monads; 10 seconds on the slide containing all the meat.
@yaccz
@yaccz 11 лет назад
Am I the only bothered by the hand on the wall?
@2002budokan
@2002budokan 4 года назад
1. First write a mainfesto about the virtues of immutability. 2. Then invent mechanisms for escaping immutability. If there is a nonsense in the programming world for years, it is paradigm bigotry. If you live in a hybrid world, you should speak a hybrid language.
@jamma246
@jamma246 5 лет назад
9:00 _"In other to understand monads, you first need to learn Haskell and Category Theory"_ But does anyone actually say this? I've essentially never see people say this seriously. What's true is that it's worthwhile learning Haskell and Category Theory, so you probably should. I haven't seen many people say that's the only way you can learn about monads though. This whole "monads are hard", "monads require you to be a genius mathematician",... blah blah blah, that people recite endlessly has become such a silly and pointless cliche. If these "instructional talks" spent less time going on about ivory towers, how hard monads are, how everyone is claiming you need to be a category theorist to understand them (which no one is) and just got to the straightforward abstraction of the concept, with simplified discussion and then practical examples, people would actually learn about them way faster. We don't need this boring 15 minute fluff in every introduction to them. It's just weird.
@CoreyMinter
@CoreyMinter 11 лет назад
Fine, but if the title was "Monads and Gonads.js" we could have known this was going to be entirely based on Javascript before getting so far into the presentation.
@Rainbow-lj5pp
@Rainbow-lj5pp 9 лет назад
``Go to Bing and search for 'monad burrito'...'' LOL!
@shweddedglowy
@shweddedglowy 10 лет назад
First 12 minutes: Waste of time. 14:29: "Macroids" seem like an entertaining abstraction that just adds complexity comparable to Haskell's typeclasses. But then he surprises by showing that this enables some really neat syntax found in a lot of JavaScript libraries. jQuery is monadic? Cool! Unfortunately, he ends with the same fallacy as when you teach monads in Haskell: He ends up explaining a lot of syntactic convenience, rather than focus on the essential. He changes the subject 29 minutes in.
@danp9885
@danp9885 11 лет назад
oh. my. god. this is so amazing, just.. wow! you guys! wow!
@Maarttttt
@Maarttttt 11 лет назад
What a load of Crockford.
@teckyify
@teckyify 11 лет назад
I don't think that he really wanted to talk about Monads, he actually took that topic for marketing reasons to attract people and talk about concurrency.
@lennyhome
@lennyhome 10 лет назад
I like Crockford as a speaker and I consider myself to be a Crockfordian in many respects, but this time he got bamboozled by Haskell people. Monads are coroutines. Support for coroutines is available for almost any programming language except Java.
@rebelg
@rebelg 8 лет назад
Nope. Coroutines are monads. Monad is a more general concept than a coroutine.
@mwgkgk
@mwgkgk 7 лет назад
I have a thing for older men talking about functional programming
@CoreyMinter
@CoreyMinter 11 лет назад
apologies for switching from 'bicycle shed' to bicycles. but you could still get what I mean.
@karolrvn
@karolrvn 4 года назад
How about the Either monad?
@dovh49
@dovh49 4 года назад
JS now has generator functions so now we can have the do notation.
@dovh49
@dovh49 3 года назад
@@agenticmark Yeah, I've just been using promises for monads actually. And I even created a validation system with promises github.com/jon49/MealPlanner/blob/master/src/app/utils/validation.ts#L74 It would be interesting to see how to make generators without function generators.
@avtaras
@avtaras Год назад
Nobody is going to talk about the title?!
@shmore
@shmore 11 лет назад
That was fantastic.
@nerdy_cat
@nerdy_cat Год назад
So, syntax highlighting is for kinder gardeners, but a pair of hanging parenthesis are confusing to the reader? Sometimes Crockford's way of thinking makes no sense to me.
@FreiheitKampfer
@FreiheitKampfer 11 лет назад
Where are the GTAC 2012 vids?
@TakanashiYuuji
@TakanashiYuuji 11 лет назад
Wow, Godwin's law so soon? I guess we're done here. I was hoping for a constructive discussion. This is why we can't have nice things.
@someman7
@someman7 11 лет назад
I've made several, which was very gratuitous of me, seeing what I was given.
@lennyhome
@lennyhome 11 лет назад
Programming languages, like everything else, should evolve on the basis of necessity. Trying to force some concept of how you would like things to be against how things really are, known to lead to disasters. You might be aware of a certain guy who wanted all human beings to be tall and blonde and what the result of that was.
@xekind
@xekind 11 лет назад
28:38 "go to bing and google for monad burrito"
@ArihantAV
@ArihantAV 8 лет назад
28:39 : "Go to Bing and Google for..."? :D
@alexnezhynsky9707
@alexnezhynsky9707 5 лет назад
Correct.
@monadbornslippy
@monadbornslippy 11 лет назад
it means "basic unit of reality" (google leibniz)
@TakanashiYuuji
@TakanashiYuuji 11 лет назад
I'd like to know in which direction you think programming languages will evolve. Did you watch the interview on channel9 he mentioned? Google/Bing for: "hewitt actor model channel9" and you'll find it.
@UnproductiveSunbeam
@UnproductiveSunbeam 11 лет назад
126635 subscribers and 28220043 video reproductions but Google Tech Talks doesn't have an avatar, come on guys, get your game together
@edgeeffect
@edgeeffect 3 года назад
Excellent clickbait title Douglas! :)
@existentialsmut
@existentialsmut 11 лет назад
The title of this talk should be revisited :(
@Mrgreatestfreakout
@Mrgreatestfreakout 11 лет назад
he is more famous than James Gosling now =*)
@felixlipski3956
@felixlipski3956 4 года назад
God damn this guy hates Haskell
@nugapa3
@nugapa3 11 лет назад
He he, kids, play with your dynamic languages inside a browser. Thank God js is localized there. Just imagine a welding robot giving you a promise that it won't weld you. But then it says "I lied". Or a nuclear how about fission reactor's promise ? or just imagine Douglas convincing Linus to switch to BEAUTIFUL and POWERFUL monads for doing IO or implementing syscals :) LOL
@basarat
@basarat 11 лет назад
Tough crowd. Didn't hear much laughter at the jokes. Much more lively crowd here: /watch?v=dkZFtimgAcM
@agustinbs
@agustinbs 11 лет назад
11:50 if you have the "huevos", you can :D
@lennyhome
@lennyhome 11 лет назад
Just check out Wikipedia's article about Lisp. And you're putting words in my mouth also. I've never said that "hiding complexity does nothing practical". What I'm telling you is that people smarter than you, me and the guy in this talk, already found out that functional programming in practice fails to hide anything.
@zetaconvex1987
@zetaconvex1987 11 лет назад
Too much background noise.
@TakanashiYuuji
@TakanashiYuuji 11 лет назад
> This talk is about doing absolutely nothing in a convoluted way. This talk is about hiding complexity. Complexity inevitably always happens, monads are way to deal with it. His reasoning is that monads are a tough subject to explain, but at the same time we're already using them. If your argument is that: hiding complexity does nothing practical, in the same way that refactoring doesn't add new features. I would agree with you, but you are also missing the point.
@HueyTheDoctor
@HueyTheDoctor 11 лет назад
Arthur Young led me here.
@Shanthakumar
@Shanthakumar 10 лет назад
Eventually it makes sense o_O
@JuanMendes
@JuanMendes 11 лет назад
Go to bing and google for monad burrito for the win
@jacksnow1381
@jacksnow1381 6 лет назад
The curse is broken thanks!
@mousedresden604
@mousedresden604 11 лет назад
Why is a Javascript guy doing monads?
@lennyhome
@lennyhome 11 лет назад
Mathematicians used to and still have this weird ideal in which them and only them are the superior race that should be allowed to use computers. And about scalability: why don't you send a mass email to the linux kernel developers in which you announce your discovery that their product is not "scalable" and that it should be re-written on javascript.
@anticipayo
@anticipayo 5 лет назад
I cant think of anything dumber than explaining monads with js
@bertvv
@bertvv 11 лет назад
He lost me on the axioms slide...
@lennyhome
@lennyhome 11 лет назад
Right. Try to make a point next time you write something.
@Crasshopperrr
@Crasshopperrr 9 лет назад
Unfortunate name for this talk.
@RogerBarraud
@RogerBarraud 8 лет назад
+Lao Tzu Bollocks.
@Mortizul
@Mortizul 6 лет назад
I thought it was rather amusing.
@wavegeekman
@wavegeekman 11 лет назад
"I am more of a grownup" - anyone who says this is not one. Utterly useless talk thatdid not do what it promised.
@LanceClark
@LanceClark 6 лет назад
Who needs coloring, other than children? Pshh, amateur :P
@JanUC3mQtGq3NMcyMVdhm6md
@JanUC3mQtGq3NMcyMVdhm6md 11 лет назад
Douglas, you can get your 'highlighting' style with Vim. See ObR3qi4Guys
@prestochangeo8420
@prestochangeo8420 5 лет назад
Hi from texas tech in the United States of America Donald Trump and Mike Pence in a drive in Texas lives in Texas and proud of the United States Mike pence hail to the chief minister and 5th the United States Mike pence hail to the chief executive officer of the zipple and 6th the United States Mike pence hail to the chief minister and Nikki Haley and Nikky Hailey and the vice president of marketing
@easybiology1000
@easybiology1000 8 лет назад
Borring
@nyx211
@nyx211 7 лет назад
So basically, a monad is a box containing a value. You can pack a value into a box (return function) and you can unpack a box, transform the value in some way then pack the result into another box (bind function).
@trucid2
@trucid2 11 лет назад
Who is forcing what and on whom? Giving a presentation is not force, but the opposite.
Далее
JavaScript: The Good Parts
1:03:48
Просмотров 585 тыс.
"Когти льва" Анатолий МАЛЕЦ
53:01
Wolfram Physics Project Launch
3:50:19
Просмотров 1,8 млн
Errichto Stream, POI 22/1
3:55:08
Просмотров 157 тыс.
Brian Beckman: Don't fear the Monad
1:07:10
Просмотров 400 тыс.
What the Heck Are Monads?!
21:08
Просмотров 72 тыс.
What is a Monad? - Computerphile
21:50
Просмотров 603 тыс.
"Когти льва" Анатолий МАЛЕЦ
53:01