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?
@librarygangster91082 жыл бұрын
for those who struggle with parsers/haskell in general, watch this course : kzfaq.info/sun/PL385J0eWxqYIJDIdG9KtP_JGLtgF0iKnj
@paryoticu2 жыл бұрын
Denoised version of The Algebra of Algebraic Data Types kzfaq.info/get/bejne/mM1gibWZvNTVZ3k.html&ab_channel=AlokSaldanha
@lucisetumbrae2 жыл бұрын
Riveting presentation that goes on my list of very useful videos about functional programming
@henriksundt71483 жыл бұрын
29:30 The polynomial expansion is valid for x<1. I wonder what that would mean for x as a list element...
@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.
@bocckoka3 жыл бұрын
oh, the happy days before the widespread singular they
@johnzhou48774 жыл бұрын
Absolutely mind-blowing and beautiful, especially in the type calculus section. Thank you Chris Taylor.
@hectorrecabal45904 жыл бұрын
Horrible sound
@dansch32744 жыл бұрын
Good introduction. Enough to get started
@halfcookedegg3134 жыл бұрын
There's another better version removing the terrible noise kzfaq.info/get/bejne/iKyCo7Wasr6Rd4E.html
@RobHarrison4 жыл бұрын
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.
@Ceilvia5 жыл бұрын
This is so good! Life saver!
@ebn__5 жыл бұрын
14:45 there's two too many mappend's in that mappend definition.
@TimTeatro5 жыл бұрын
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.
@johnhui53006 жыл бұрын
Does anyone know the paper (by someone named "top-") that he cites at 34'25"?
@Ketannabis6 жыл бұрын
Yes I believe I do matter.
@AlexBerg16 жыл бұрын
Ooo, using generics to write converters between domain objects is a cool idea!
@AlexBerg16 жыл бұрын
Awesome talk! Great motivation and summaries.
@convexset6 жыл бұрын
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".
@timothydsears6 жыл бұрын
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.
@jollyjack58566 жыл бұрын
greeaaat. yet another crappppy sound monad video. it's like they doing it on purpose.
@ravidelia88643 жыл бұрын
audio is filthy I/O and state my friend, to experience true peace you must give it up.
@Elite75556 жыл бұрын
Talking about preparation... Sorry, that was very unprofessional.
@Hjtrne7 жыл бұрын
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.
@thomasray52887 жыл бұрын
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
@bocckoka7 жыл бұрын
my fav type error was an example by Bartosz Milewski: that Kafka character that turned into a roach.
@gofer91567 жыл бұрын
The speaker needs to be using his active voice more, and stop saying "ahm" all the time.
@mwgkgk7 жыл бұрын
YEAH Time to get to mars boys
@SinglebitOrg7 жыл бұрын
Thank you so much! An amazing talk.
@eddie23787 жыл бұрын
Awesome. I can't wait to try this out. Does it support signals and slots running on different threads as well?
@aMulliganStew7 жыл бұрын
the sporadic volume cuts make listening difficult.
@peterostertag86997 жыл бұрын
That's good! I think, I got the point - for the first time!
@DarkAngel-vp6en7 жыл бұрын
no puedes hablar más despacio? no mames
@sarahkerrigan72407 жыл бұрын
love this lecture, we need intermediate to advanced level haskell talk. been fed up with "haskell introduction"...
@sarahkerrigan72407 жыл бұрын
beautiful newton's method in haskell indeed!
7 жыл бұрын
Excellent! Great job. Thanks.
@AliGhanbari208 жыл бұрын
I enjoyed the tutorial, it was truly useful. Thank you very much Chris Taylor.
@MegaBrownee8 жыл бұрын
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.
@clarejang90887 жыл бұрын
MegaBrownee Nothing type has one value, 'Nothing', where Void type has no value, so they are semantically different.
@MegaBrownee7 жыл бұрын
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.
@garciat7 жыл бұрын
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
@paulika20128 жыл бұрын
You should take the mike and shove / bind it to the range of whomever gave it to you, regarded as a function.
@paluho8 жыл бұрын
Great talk! Thanks!
@AndersSildnes8 жыл бұрын
So nuts and beautiful :)
@bnwo8 жыл бұрын
I hate when people come late.
@bocckoka6 жыл бұрын
I hate when the audio quality is bad. Haskell can take up my cognitive bandwith in itself, no need for shit audio.
@felixlipski39563 жыл бұрын
I hate hate
@asgernielsen97238 жыл бұрын
terrible sound :( love the content tho
@wyllmRox8 жыл бұрын
Does his microphone have hiccups?
@MorganEarlJones7 жыл бұрын
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
@viewtifulviewer72828 жыл бұрын
Wow!! Amazing talk!! This is the best explanation on the web! By far!
@gfixler8 жыл бұрын
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
@yongamer8 жыл бұрын
8:53 Here he has defined *> twice and also has not implemented it.
@n.w.a.3378 жыл бұрын
it's two different ways of doing the same thing
@awllower28 жыл бұрын
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.