Incremental UI Rendering
31:36
6 жыл бұрын
12 Monads of Christmas
1:07:50
7 жыл бұрын
In Haskell, less is more
57:51
8 жыл бұрын
Darcs - what, why and how
1:22:36
9 жыл бұрын
Recursion Schemes
1:50:29
9 жыл бұрын
Pipes
45:54
10 жыл бұрын
Being Lazy
1:18:16
11 жыл бұрын
Parsing Stuff in Haskell
55:10
11 жыл бұрын
The Algebra of Algebraic Data Types
1:04:35
Why Do Monads Matter?
1:19:12
11 жыл бұрын
Пікірлер
@tricky778
@tricky778 Жыл бұрын
12:50 foldrStep alg recurse = alg . getCompose . fmap recurse . Compose . unList foldr alg = fix $ foldrStep alg
@tricky778
@tricky778 Жыл бұрын
cataStep alg recurse = dimap unFix alg $ fmap recurse -- cataStep alg = dimap unFix alg . fmap --? Yikes - - cataStep = rmap fmap . dimap unFix cata = fix . cataStep
@tricky778
@tricky778 Жыл бұрын
16:50 excessive strictness in the last line? should be: alg (Just v) r = case v of (x, xs) - > xs (f r x) -- so that you can never hit bottom before you apply r even for alg (Just undefined)? Or is that always impossible here?
@librarygangster9108
@librarygangster9108 2 жыл бұрын
for those who struggle with parsers/haskell in general, watch this course : kzfaq.info/sun/PL385J0eWxqYIJDIdG9KtP_JGLtgF0iKnj
@paryoticu
@paryoticu 2 жыл бұрын
Denoised version of The Algebra of Algebraic Data Types kzfaq.info/get/bejne/mM1gibWZvNTVZ3k.html&ab_channel=AlokSaldanha
@lucisetumbrae
@lucisetumbrae 2 жыл бұрын
Riveting presentation that goes on my list of very useful videos about functional programming
@henriksundt7148
@henriksundt7148 3 жыл бұрын
29:30 The polynomial expansion is valid for x<1. I wonder what that would mean for x as a list element...
@nickfarmer2452
@nickfarmer2452 Жыл бұрын
Formal power series (which is what this stuff is) doesn't worry about convergence, concentrating on the algebra (i.e. manipulating formulas, hence "formal") and leaving the x entirely indeterminate.
@bocckoka
@bocckoka 3 жыл бұрын
oh, the happy days before the widespread singular they
@johnzhou4877
@johnzhou4877 4 жыл бұрын
Absolutely mind-blowing and beautiful, especially in the type calculus section. Thank you Chris Taylor.
@hectorrecabal4590
@hectorrecabal4590 4 жыл бұрын
Horrible sound
@dansch3274
@dansch3274 4 жыл бұрын
Good introduction. Enough to get started
@halfcookedegg313
@halfcookedegg313 4 жыл бұрын
There's another better version removing the terrible noise kzfaq.info/get/bejne/iKyCo7Wasr6Rd4E.html
@RobHarrison
@RobHarrison 4 жыл бұрын
Missed the event last night cos couldn't travel in from Cornwall. Will you be posting the vids soon?
4 жыл бұрын
I love seeing these kinds of projects finding more direct ways to handle incremental updates without a virtual DOM intermediary. (Like S.js/Surplus in JS for example.) I know Purescript Panda was just an exercise in that direction, but I bet the next framework to catch on after React will work this way.
@Ceilvia
@Ceilvia 5 жыл бұрын
This is so good! Life saver!
@ebn__
@ebn__ 5 жыл бұрын
14:45 there's two too many mappend's in that mappend definition.
@TimTeatro
@TimTeatro 5 жыл бұрын
The talk is a very good primer and covers the more esoteric morphisms that are too often overlooked. I think negative comments on the speaker are without merit. Any serious study of the topic will require a dive into the literature, but the talk is a nice sampling, even if it is a bit of a whirlwind. Thank you, Tim Williams.
@johnhui5300
@johnhui5300 6 жыл бұрын
Does anyone know the paper (by someone named "top-") that he cites at 34'25"?
@Ketannabis
@Ketannabis 6 жыл бұрын
Yes I believe I do matter.
@AlexBerg1
@AlexBerg1 6 жыл бұрын
Ooo, using generics to write converters between domain objects is a cool idea!
@AlexBerg1
@AlexBerg1 6 жыл бұрын
Awesome talk! Great motivation and summaries.
@convexset
@convexset 6 жыл бұрын
If one uses the fact that the entries in row n of Pascal's triangle sum to 2^n (where we start counting at 0), the relationship for set becomes may be immediately obtained without "differencing".
@timothydsears
@timothydsears 6 жыл бұрын
Really great talk. If you want to know how far foldr and unfoldr can take you this talk is inspiring. Thanks, John Wiegley for recommending.
@jollyjack5856
@jollyjack5856 6 жыл бұрын
greeaaat. yet another crappppy sound monad video. it's like they doing it on purpose.
@ravidelia8864
@ravidelia8864 3 жыл бұрын
audio is filthy I/O and state my friend, to experience true peace you must give it up.
@Elite7555
@Elite7555 6 жыл бұрын
Talking about preparation... Sorry, that was very unprofessional.
@Hjtrne
@Hjtrne 7 жыл бұрын
I think this video is well worth its time, in spite of the errors in it. I have seen more knowledgable presentations, but they all went much too quickly into generalisations. Like the title suggests, here it is made clear why understanding the topic is worthwhile (in terms of some specific cases contained in those generalisations). In my own novice observations though, beyond the first two examples the code doesn't actually make use of the theory of monads (if that's the right word). Compose and id are defined, but don't ever contribute to code that is executed. AddP of the third example and runIO of the fourth implement the parts of compose they need for themselves, with direct reference to the structure of the monad - which misses the point entirely. Without promising that this is the standard, correct way of doing things, I can at least say that it would be an improvement to e g implement addP as addP ns ms = ns >>= ( -> ms >>= (\m -> return (n+m))) In order to get that to work, P should either be defined as a monad along with the functions (>>=) and return, or just be replaced with [Integer] (since list is a monad already). I wouldn't call it elegant, but at least the interaction with the structure of the monad is now kept out of this function.
@thomasray5288
@thomasray5288 7 жыл бұрын
such a bad presentation. do not waste your time with that crap. This guy is not only very poor prepaired, he seems not to know what he is talking about
@bocckoka
@bocckoka 7 жыл бұрын
my fav type error was an example by Bartosz Milewski: that Kafka character that turned into a roach.
@gofer9156
@gofer9156 7 жыл бұрын
The speaker needs to be using his active voice more, and stop saying "ahm" all the time.
@mwgkgk
@mwgkgk 7 жыл бұрын
YEAH Time to get to mars boys
@SinglebitOrg
@SinglebitOrg 7 жыл бұрын
Thank you so much! An amazing talk.
@eddie2378
@eddie2378 7 жыл бұрын
Awesome. I can't wait to try this out. Does it support signals and slots running on different threads as well?
@aMulliganStew
@aMulliganStew 7 жыл бұрын
the sporadic volume cuts make listening difficult.
@peterostertag8699
@peterostertag8699 7 жыл бұрын
That's good! I think, I got the point - for the first time!
@DarkAngel-vp6en
@DarkAngel-vp6en 7 жыл бұрын
no puedes hablar más despacio? no mames
@sarahkerrigan7240
@sarahkerrigan7240 7 жыл бұрын
love this lecture, we need intermediate to advanced level haskell talk. been fed up with "haskell introduction"...
@sarahkerrigan7240
@sarahkerrigan7240 7 жыл бұрын
beautiful newton's method in haskell indeed!
7 жыл бұрын
Excellent! Great job. Thanks.
@AliGhanbari20
@AliGhanbari20 8 жыл бұрын
I enjoyed the tutorial, it was truly useful. Thank you very much Chris Taylor.
@MegaBrownee
@MegaBrownee 8 жыл бұрын
Why are Nothing/Nil modeled as Unit/()/'1' rather than Void/Zed/Naught/'0' ?? Is this because they are the Empty Product, not Empty Sum? Are we therefore naming these wrong? Definitely blows my mind. So we map from the discrete types to the continuous real numbers, apply analysis (calculus), which transits territory that has no correspondence in discrete types, then take the result and map back to discrete types. WOW.
@clarejang9088
@clarejang9088 7 жыл бұрын
MegaBrownee Nothing type has one value, 'Nothing', where Void type has no value, so they are semantically different.
@MegaBrownee
@MegaBrownee 7 жыл бұрын
Thanks. I get that. But "nil" in my mind connotes "0", ie Void, absence of any value. As you said, Nil/Nothing/None/Null have one value, they're singletons or "1". So maybe all these items that are traditionally named N* (and many of the types that have been called "void" mistakenly, like in C/C++/Java) should be called "Unit" or "Sentinel" or "Term"... Simply to avoid natural confusion.
@garciat
@garciat 7 жыл бұрын
It depends on what you mean by Nil/Nothing/None/Null. In Haskell, Nothing is a parameterless constructor (not a type) for the Maybe types. However, in Scala, Nothing is a Void or Empty type, i.e. it is uninhabited (absence of any value). Thus, it is "safe" to be a subtype of every other type in the system. But then you have the Null type (inhabited only by `null`), which is also a subtype of all reference types, and is horrendous because it *is* inhabited. [1] [2] In short, all these words mean different things in different type systems. Extra: The Void type is very interesting in type theory. A function that maps to it is a theorem for the negation of the input type. [3] In that sense, yes, C/C++/Java/C#/etc. are way off base. [1] www.scala-lang.org/api/2.9.1/scala/Nothing.html [2] www.scala-lang.org/api/2.9.1/scala/Null.html [3] ncatlab.org/nlab/show/negation#in_type_theory_syntax
@paulika2012
@paulika2012 8 жыл бұрын
You should take the mike and shove / bind it to the range of whomever gave it to you, regarded as a function.
@paluho
@paluho 8 жыл бұрын
Great talk! Thanks!
@AndersSildnes
@AndersSildnes 8 жыл бұрын
So nuts and beautiful :)
@bnwo
@bnwo 8 жыл бұрын
I hate when people come late.
@bocckoka
@bocckoka 6 жыл бұрын
I hate when the audio quality is bad. Haskell can take up my cognitive bandwith in itself, no need for shit audio.
@felixlipski3956
@felixlipski3956 3 жыл бұрын
I hate hate
@asgernielsen9723
@asgernielsen9723 8 жыл бұрын
terrible sound :( love the content tho
@wyllmRox
@wyllmRox 8 жыл бұрын
Does his microphone have hiccups?
@MorganEarlJones
@MorganEarlJones 7 жыл бұрын
My only guess is that somewhere in the audio chain, there's a cough/loud noise filter with the threshold set a bit too low
@viewtifulviewer7282
@viewtifulviewer7282 8 жыл бұрын
Wow!! Amazing talk!! This is the best explanation on the web! By far!
@gfixler
@gfixler 8 жыл бұрын
I believe the paper mentioned @34:20 *just as the audio goes out* is this one (which is linked to near the end of the 2nd of the 3 blog posts that go with this talk) arxiv.org/abs/math/0212377
@yongamer
@yongamer 8 жыл бұрын
8:53 Here he has defined *> twice and also has not implemented it.
@n.w.a.337
@n.w.a.337 8 жыл бұрын
it's two different ways of doing the same thing
@awllower2
@awllower2 8 жыл бұрын
It is a built-in function, and he wrote the two lines to show how the types matched so that he can apply that function.