Lambda? You Keep Using that Letter - Kevlin Henney

  Рет қаралды 97,304

NDC Conferences

NDC Conferences

4 жыл бұрын

Lambdas. All the cool kid languages have them. But does 'lambda' mean what C#, Java, Python, C++, etc. mean by 'lambda'? Where did lambdas come from? What were they originally for? What is their relationship to data abstraction?
In this session we will into the history, the syntax and the uses of lambdas and the way in which lambda constructs in various languages do (or do not) match the original construct introduced in lambda calculus.
Check out more of our talks, courses, and conferences in the following links:
ndcconferences.com/
ndc-london.com/

Пікірлер: 137
@Andrumen01
@Andrumen01 Жыл бұрын
I loved the quote: "Physicists don't use namespaces", epic quote.
@Typhoonbladefist
@Typhoonbladefist 4 жыл бұрын
Kevlin Henney always has some of the most interesting talks about nothing.
@DeepDuh
@DeepDuh 3 жыл бұрын
the Seinfeld of tech talks
@Typhoonbladefist
@Typhoonbladefist 3 жыл бұрын
@Khalil Aydin no you didn’t. Shut up
@kafir1337
@kafir1337 2 жыл бұрын
@@DeepDuh lol
@arekkrolak6320
@arekkrolak6320 Жыл бұрын
he is talking in an interesting way but doesn't really say anything - what does it mean when you turn off your computer your program is still running, we can all go home? :)
@JDogB-tc3lx
@JDogB-tc3lx 7 сағат бұрын
Exactly! Blah blah blah, get the hell on with it and please stop with your corny programming dad jokes
@DavidGonzalezSamudio
@DavidGonzalezSamudio 3 жыл бұрын
In a way, Kevlin crafts the introduction, the motivating example, the background, and the related work for most PL research papers.
@goobah01
@goobah01 3 жыл бұрын
Nice explanation of Church Numerals. I remember a schoolteacher asking us ‘what is 2? Can you you explain it?’ Or words to that effect. At the age of 11 I was stumped. It would be some years before I entered Alonzo’s Church.
@crashmatrix
@crashmatrix 3 жыл бұрын
"Silence of the Lambdas", good grief that cracked me up.
@Respectable_Username
@Respectable_Username 6 ай бұрын
This talk makes me appreciate JavaScript (in the form of TypeScript of course, as a sane developer) even more. So many of these things are just built into the language that you bring up these concepts that sound big and complicated and then I go "ohhhh, it's just an arrow function" or "ohhhh it's just a JS object" and it simplifies a whole bunch. Even typing of lambdas is easy, because the type of an arrow function in TS is (type_of_first_param, type_of_second_param) => return_type. TS is really an underappreciated language as just a general programming language away from the web frontend!
@Asdayasman
@Asdayasman 4 жыл бұрын
My man out here barefacedly using Comic Sans and Papyrus on his slides like they're not crimes against nature.
@anselmschueler
@anselmschueler 4 жыл бұрын
comic sans is the font that simon peyton jones uses in all his talks
@silvianaamethyst
@silvianaamethyst 3 жыл бұрын
Comic Sans is recognized as an accessible font for visually impaired persons. We should stop demonizing it.
@Asdayasman
@Asdayasman 3 жыл бұрын
@@silvianaamethyst Nah, we should put them out of their misery. Imagine not only being disabled, but having to look at comic sans to read anything. I'd rather be dead.
@nickdrian510
@nickdrian510 Жыл бұрын
A lecture on arbitrary semantics and controversial distinctions. Entertaining none the less.
@movax20h
@movax20h 3 жыл бұрын
Everybody should read at least a part of "Structure and Interpretation of Computer Programs". It is enlightening. Or try learning Ocaml, or if you are a bit more brave Haskell (I don't like syntax too much). It is eye opening when you do it first time.
@allendupras
@allendupras 3 жыл бұрын
Or category theory! (that's the one I'm hooked on now) Anyhow the Curry-Howard-Lambek Isomorphism shows that all these things are the same!!
@matheusjahnke8643
@matheusjahnke8643 3 жыл бұрын
Haskell syntax is kind of nice. Saves you some parenthesis(looking at you, Lisp) But "Functor", "Monad", "fmap"? Just name it "Mappable", "Joinable", "map"(make this List-only function generic as "fmap" is).
@jamesmccabe2286
@jamesmccabe2286 3 жыл бұрын
I watch this 47 times a day
@Snickersnack329
@Snickersnack329 4 жыл бұрын
I'm not a fan of this talk, but working through the Structure and Interpretation of Computer Programs gets a big thumbs up! That book and course opened my mind in a way nothing else had.
@puellanivis
@puellanivis 3 жыл бұрын
Technically, in `square(x): x * x` all of the open bindings (free/unbound variables) are closed by the lexical environment, by virtue of being a vacuous statement. It might make sense to distinguish a wholly-self-contained closed expression, and one that incorporates various levels, but strictly speaking, I don’t see the value in limiting “closure” to cases where the enclosed lexical environment is empty.
@isbestlizard
@isbestlizard 3 жыл бұрын
I think sometimes maybe nobody actually knows what closures or lambda is, like Taoism. If you actually did know what it is, you could describe it concretely and easily rather than giving definitions which mean nothing. People trying to define a closure would also define a tree as 'part of a forest' rather than 'big tall solid thing made out of wood and branches with leaves on'
@oliviermallet5460
@oliviermallet5460 4 жыл бұрын
The 1932 foundational article is accessible here www.jstor.org/stable/1968337
@ModeratelyInsane
@ModeratelyInsane 3 жыл бұрын
"Moderately insane" hahaha i love this guy
@cmw3737
@cmw3737 3 жыл бұрын
29:45 I've been looking for this for a while, I knew I'd learnt about actors being equivalent to lambdas but forgotten where.
@MM-pi2sv
@MM-pi2sv 3 жыл бұрын
Fantastic origins talk! Turing gets a lot of buzz but it really does all go back to Church.
@nextlifeonearth
@nextlifeonearth Жыл бұрын
43:28 you CAN in fact name the type of a lambda expression in C++, just not in the traditional C-way. ie: [] () -> float { return 1; } which returns a float with value 1. Even works with specific types where you implicitly call the constructor with an initializer list; [] () -> MyType { return {1, 2, "foo"; } would construct an instance of type MyType with parameters 1, 2 and "foo".
@lauzing4029
@lauzing4029 3 жыл бұрын
Related to the final part: David Beazley did the lamda implementation of logic and numbers etc. using Python in kzbin.info/www/bejne/ppymfYCiZcqSZs0
@stevenshrii
@stevenshrii 2 жыл бұрын
Answer = (condition < n) ? IfTrue : ifFalse;
@seanwarren9357
@seanwarren9357 4 жыл бұрын
Yeah, idk, my use of lambda comes in waves.
@stephenjames2951
@stephenjames2951 4 жыл бұрын
Very engaging presentation. I think I got about 1/2. But the history included was great.
@garryiglesias4074
@garryiglesias4074 4 жыл бұрын
If you want deeper understanding, watch MIT SICP lectures from Sussman and Abelson. It's long, but even the few first hours are litterally "Wizardry". The book in itself is a treasure (Structure and interpretation of computer programs, that's the blue book in the middle of those slides).
@axelBr1
@axelBr1 4 жыл бұрын
As an engineer who occasionally writes C++ to help me do my work, I have one question, "What are the actual benefits of lambda functions in actually getting something done?"
@user-cf1oo3pn3c
@user-cf1oo3pn3c 4 жыл бұрын
fwiw, for me, it made passing functors for use with std::thread and co. easier (to read) than using things like std::bind. actually, it made passing functors to anything that need them easier in general.
@deepbluev7.x813
@deepbluev7.x813 4 жыл бұрын
The most useful property of them is probably, that you can parameterize algorithms. Some examples: std::sort(myVey, [](auto a, auto b){ return a < b; }); Here the parameterization is of course uninteresting, since std::sort by default uses operator 1000; }); But you can also further parameterize that: auto someValues = filtered(myVev, [legalAge](const auto& value) { return value.age > legalAge; }); So here the benefit is, that you don't need to implement arbitrary operators or write different filter functions. You can parameterize existing algorithms right there without defining something out of band. This makes code shorter, simpler, easier to read and maybe even faster.
@axelBr1
@axelBr1 4 жыл бұрын
@@user-cf1oo3pn3c Will look into that, if I ever have to use threads.
@axelBr1
@axelBr1 4 жыл бұрын
@@deepbluev7.x813 Thanks. I guess because I use C++ to do procedural data processing (probably incorrectly as use singletons to wrap up data and functionality into classes), I don't really use short functions, i.e. squaring a number. But will look out for opportunities to use them as you suggest.
@deepbluev7.x813
@deepbluev7.x813 4 жыл бұрын
@@axelBr1 They tend to be sneaky little ninjas. Once you used them a few times, you tend to find more and more places where you can use them. For example to initialize a const or static multimember struct.
@edminchau811
@edminchau811 4 жыл бұрын
I have been thinking of looking at some functional programming languages like Haskell, and from the descriptions and talks it always seemed to me that the language was doing things in a very similar way to some of the spreadsheets I've cooked up in Open Office. And then I see this at 14:15, and yup.
@sasukesarutobi3862
@sasukesarutobi3862 2 жыл бұрын
14:10 Microsoft have since included lambdas in Excel
@JohnDlugosz
@JohnDlugosz 3 жыл бұрын
11:30 re parenthesis, just to make things easier, like to see a compiler say "Yea, I understand that": You're describing Perl.
@popularmisconception1
@popularmisconception1 Жыл бұрын
In fact the false being equal to zero really IS arbitrary and just a matter of convention and convenience. It depends on how you use it. You could switch the definition of truth and false, making true equivalent to zero, as long as all your if-then-else statements become if-else-then.
@mittelwelle_531_khz
@mittelwelle_531_khz 9 ай бұрын
It can actually make sense if you consider you may fail in many ways doing a thing but there's only one way to get it right. (Eg. returning "0" by convention from a C/C++ main program if everything went OK but a number unequal to "0" to indicate what failed).
@virkony
@virkony 4 жыл бұрын
(at 54:59 ) There is no reason to have 'false' = \a b -> b . You can swap them and nothing changes as long as rest of definitions are consistent (e.g. 'false' = \a b -> a, 'and' = \f g -> f f g, 'or' = \f g -> f g g).
@steffahn
@steffahn 4 жыл бұрын
I suppose he knows… really this “false=0”-explanation: it’s a joke.
@ms-qr4br
@ms-qr4br 4 жыл бұрын
there is no reason for anything to mean anything
@PaulPaulPaulson
@PaulPaulPaulson 4 жыл бұрын
54:54 As before with the _2 name for "apply twice", the names "true" and "false" are misleading here. What this actually is is ifTrue and ifFalse and it's called on a boolean value or expression. (x < 4) ifTrue: [x++] or in others: y := (x > 4) ifTrue: [x * 2] ifFalse:[x + 7] You wouldn't want to write (x < 4) true: [x * 2] That would be confusing af.
@virkony
@virkony 4 жыл бұрын
@@PaulPaulPaulson not sure I understand where that syntax coming from. I think you can imagine that Church encoding defines data in a structure that is useful in future operations on them. In particular: add = (a, b) => n => z => a(n)(b(n)(z)) mul = (a, b) => n => z => a(b(n))(z) For booleans it is even easier to imagine since they explicitly represent branching: nonzero = a => a(_ => f => t => t)(f => t => f) // from natural to boolean (first argument corresponds to false) gt = (a, b) => nonzero(leftover(a, b)) Thus after providing values of both branches to boolean you collapse it to one or another branch: y = x => gt(x, _4)(add(x, _7))(mul(x, _2)) Full example: tinyurl.com/qv9u6k4
@MusashiHunter3
@MusashiHunter3 9 ай бұрын
40:09 [](){}() Silence of the Lambdas! Brilliant!
@PaulPaulPaulson
@PaulPaulPaulson 4 жыл бұрын
Thumbs up from a former Smalltalk programmer for mentioning Alan Kay
@MrDiaxus
@MrDiaxus 3 жыл бұрын
Functional evidence that we cannot successfully define anything without redefining it ad absurdum... carry on.
@Alex-dn7jq
@Alex-dn7jq 4 жыл бұрын
for the parenthesis thing, have a look at F#
@logiciananimal
@logiciananimal 4 жыл бұрын
The presenter missed some other weird notes: Currying, if named by origin, should be called "Schönfinkeling". (See his paper "On the building blocks of mathematical logic" reprinted and translated in _From Frege to Gödel_.) Also, as for true and false - in other work in the foundations of mathematics from the 1920s and 1930s, true "was" 1 and false "was" 2. (In the work of Gödel, for example, if I remember correctly.)
@piraka_mistika
@piraka_mistika 10 ай бұрын
in my formal semantics class in college, we called it "Schönfinkelization"
@logiciananimal
@logiciananimal 10 ай бұрын
@@piraka_mistika Neat - did you use a text that had that "right"? If so, which one?
@piraka_mistika
@piraka_mistika 10 ай бұрын
@@logiciananimal I don’t think we used a textbook
@MortenSkaaning
@MortenSkaaning 4 жыл бұрын
When you don't add names to types and variables, the maintenance programmer will kill you after they had an allnighter of Unnamed doing Unnamed on Unnamed and passing it to Unnamed. You should not look to the Smurfs as your source of reliability.
@Trazhenko
@Trazhenko 3 жыл бұрын
So much this. I recently had to debug an issue in a class that was a giant pile of nested anonymous classes and functions, and it was very difficult to follow, even with the debugger. When it works, it's kind of cool and magical, but when it doesn't... well... it's hard to find the problems.
@edgeeffect
@edgeeffect 3 жыл бұрын
Optional parens for function arguments... like to see a compiler deal with that..... hello Ruby.
@Cenitopius
@Cenitopius 10 ай бұрын
Henney spends a minute talking about "Hiddenness" starting around 33:00 - can someone please explain what he's saying to me?
@gustavcoetzee5018
@gustavcoetzee5018 Жыл бұрын
Thank you
@feddeschaeffer7116
@feddeschaeffer7116 4 жыл бұрын
6:15 “[Functional programming] is so pure, that even if you unplug your computer, your functional programs will still run. Oh wait, that doesn't work. Yeah, they're riddled with side effects. All of this stuff is an illusion.” Every single function takes some amount of processing time as an input before it can decide on the appropriate output, but I've never seen a useful way to acknowledge that. At least not in the way in which we're more and more often starting to do when composing functions with other sorts of expected effects. Even Haskell includes ‘never returning’ as a valid output of any type of function. Is it ever possible to statically assert that the runtime of an algorithm stays within a certain ‘big O notation’ with regards to (some of) its inputs, or is that what the halting problem says no to?
@casperes0912
@casperes0912 4 жыл бұрын
Interesting question. I'm sure what you're describing here can be reduced to the Halting Problem, since there's no way of knowing if the execution time is just dependant on an extremely large constant. O(n) and O(n^n) could take an equally long time on the given input if the constants for the O(n) solution are large enough. But just like the Halting Problem itself this only applies when we look at things in a very general sense. For example, determining that the function int retX() { return 1; } halts isn't really very difficult at all. We can also very easily determine the time to execute this as being constant. We have something called formal verification tools. You can have a look at Dafny. And these tools allow you to set up some information about your code, and the verification tool will prove whether the facts about the code hold or not. And as per the halting problem this cannot be done in general. But a lot of the time we can do it on specific code, by reducing it to SAT solving and other problems that are possible, even if they are hard. Now I don't think these formal verification tools currently do O verification but similar techniques could definitely be applied to verify a function's O time or space complexity. I never get told about replies to KZbin comments, if you'd like to discuss this further, you can email me casperes1996@me.com I am having an exam on Computability and Logic on Saturday so I'm quite in the weeds of all of this at the moment ;)
@stighemmer
@stighemmer 4 жыл бұрын
Common Lisp may be a monster, but it is a very cuddly monster!
@crashmatrix
@crashmatrix 3 жыл бұрын
Embrace Lisp, and it will embrace you!
@brandonbenson2055
@brandonbenson2055 3 жыл бұрын
So... In short computers are the expression of lambda using technology.
@tantalus_complex
@tantalus_complex 2 жыл бұрын
(Today's) computers are the expression of lambda where X is a transistor powered *on.*
@otesunki
@otesunki 3 жыл бұрын
I watch this 47 times a day
@djchrisi
@djchrisi 4 жыл бұрын
2:24 : excellent pronunciation Kevlin
@steffahn
@steffahn 4 жыл бұрын
Right, I couldn’t help but notice that, too-it’s somewhat rare to get these kind of spot-on pronunciations of German words from English‐speakers. His name is Kevlin though.....
@djchrisi
@djchrisi 4 жыл бұрын
Frank Steffahn corrected...
@GeorgeTsiros
@GeorgeTsiros 2 жыл бұрын
44:10 only reason it doesn't like that is it doesn't know the type of x. Use explicit typing and the compiler will accept it. Action nop = ()=>{}; nop();
@NicholasPierce1030
@NicholasPierce1030 4 жыл бұрын
1:30 What about eigenvalues????
@ingframin
@ingframin 4 жыл бұрын
And probability distributions...
@tiborgrun6963
@tiborgrun6963 4 жыл бұрын
@@ingframin And Lebesgue measures?
@movax20h
@movax20h 3 жыл бұрын
Actually, eigenvalues and wavelengths from physics are one and the same. The problem of eigenvalues arrised from algebraic treatment of partial differential equations, most notably these of waves. The same later applied to Schrödinger's equation, which is equivalent to Hamiltonian approach to QM. Again, lambda. And in its original form there lambda was a energy of a state, which is directly and explicitly related to wavelength. That is why also we call "set of all eigenvalues" to be a "spectrum". Just like the light has spectrum. One and the same.
@daniilselivanov1251
@daniilselivanov1251 3 жыл бұрын
Impressive af!
@edgeeffect
@edgeeffect 3 жыл бұрын
Programming with emoji.... you're getting dangerously close to APL!
@samferrer
@samferrer 2 жыл бұрын
Nice talk ... yet ... what is the definition of "problem"?
@wagyourtai1
@wagyourtai1 9 ай бұрын
11.20 GROOVY
@michaeljuliano8839
@michaeljuliano8839 3 жыл бұрын
Silence of the Lambdas. XD I'm dead.
@kenzmail5243
@kenzmail5243 2 жыл бұрын
Perl is executable line noise... Ha! I laughed.
@ifireblade09
@ifireblade09 4 жыл бұрын
I feel asleep. was great. What would that lambda look like?
@TigerSpiderTube
@TigerSpiderTube Жыл бұрын
I'm now going to watch the cricket.
@joebowbeer
@joebowbeer 6 ай бұрын
25:18 Wizard Book
@DavidLindes
@DavidLindes 4 жыл бұрын
45:51 - "it's a big old mess" -- yeah, that's Java in a nutshell, right there. ;) ;) edit: 46:04 - "there's a lot of duplication here" -- oh yeah, that too. :)
@Coder-zx4nb
@Coder-zx4nb 4 жыл бұрын
Where's the lie tho?
@cr6925
@cr6925 4 жыл бұрын
A lot of words about - what ?
@pigboiii
@pigboiii 3 жыл бұрын
So why did I decide to implement those lambda numbers in Kotlin again? Jesus christ what a mind fuck. Got it to work though I guess...
@ajar1000
@ajar1000 3 жыл бұрын
Awesome talk, but yellow text on a pink background using the font papyrus is cursed lol
@maswinkels
@maswinkels 3 жыл бұрын
His jokes are clever. But his timing as a comedian is so terribly off that they all fall flat. Still a very interesting talk.
@jeremypnet
@jeremypnet Жыл бұрын
14:23 Excel now has lambdas.
@einfacherkerl3279
@einfacherkerl3279 4 жыл бұрын
in every presentation, He has the same thing to say "it was done before" and then goes on to show some 60s or 70s stuff to back his claim even if it does not. search youtube for all his video same rhetoric you would hear!
@skepticmoderate5790
@skepticmoderate5790 4 жыл бұрын
Yeah Henney tends to recycle his material quite a lot.
@casperes0912
@casperes0912 4 жыл бұрын
Weird you say this on this talk though since this was different to most of his other ones. He didn't even mention the Singleton whiskey! - I love him though. Big fan.
@MSStuckwisch
@MSStuckwisch 4 жыл бұрын
*sigh* Perl is only executable line noise if you choose to make it as such. It's just the culture of people who thinks it's cool to golf everything always crossed with Perl's ability to actually be golfed down to small sizes that has contributed to some of the most hideous examples of coding line noise. IMO, the extreme readability of Raku (née Perl 6) code is evidence of it. At its core, you can write many things virtually identically but most folk who write Raku code (if you peruse the ecosystem) are stunningly easy to read and follow, even without an IDE doing syntax highlighting.
@williamwest3594
@williamwest3594 4 жыл бұрын
I'm thinking of jumping into Raku. Your tiny review of it's making me think extra . . .
@kahnfatman
@kahnfatman 2 жыл бұрын
"It turns out" is a Kevlin Henney phrase.
@cruz1ale
@cruz1ale Жыл бұрын
In a talk about functional programming, he should really say "turning out is applied to it", instead
@alexanderilin8720
@alexanderilin8720 2 жыл бұрын
Too bad he didn't include Factor (the language) in his talk.
@johningles1098
@johningles1098 2 жыл бұрын
Commenting from the future where excel now has lambdas 😄
@cruz1ale
@cruz1ale Жыл бұрын
I thought he meant that in Excel you can just do =A1*A1 in a cell and get a result. That's a lambda since you're not actually naming a function elsewhere and then calling that in the cell
@PaulPaulPaulson
@PaulPaulPaulson 4 жыл бұрын
52:00 _2 is not a good name, because it's not the number, it's an "apply twice" and should be named something like apply2Times. Only if you bind it to the increment function and a start value of 0 it becomes an integer two. _int2 = () => apply2Times(n => n +1)(0) This of course limits it to integers, but you can easily avoid that by adding an argument for the number type. The number type would be an interface which provides the zero-element and the increment operation. _2 = (numberType) => apply2Times(n => numberType.increment(n))(numberType.zeroElement) _int2 = () => _2(int) _double2 = () => _2(double)
@virkony
@virkony 4 жыл бұрын
That's a "beauty". Church numerals "have no meaning", but only expression structure. Once you define terms you can collapse to "value" encoded in it. as_int = a => a(x => x + 1)(0) as_float = a => a(x => x + 1.0)(1.0) as_bool = a => a(_ => true)(false) // 'add' becomes 'or', 'mul' becomes 'and', anything beside '_0' becomes 'true' as_roman = a => a(x = x + "I")("")
@zTJq40sl
@zTJq40sl 3 жыл бұрын
In pure lambda calculus, there are no numbers. There are only lambdas. So if you want to represent numbers in pure lambda calculus, you have to represent them by lambdas. Lambdas that are built from nothing but lambdas. JavaScript isn't lambda-calculus, but as it has all ingredients that lambda calculus requires, the talk can use it to show how this would be done. You're taking JS's built-in numbers too literal. (Pun intended.) In the talk, they're only used for illustration. Assume a JS variant that doesn't have them. You'd have to re-build everything from first principles, i.e. (here) from lambdas.* "apply twice" would be one of the simplest representations of the concept "two" that you'd be able to construct. If it's the closest thing to "two" that you can ever get, you might as well call it "2". Except that JS identifier naming rules don't allow a non-literal to be named "2", so you name it "_2". *By the way, lambda calculus isn't the only thing from which you can pretend that "numbers don't exist, but let's (re-)invent them". You can for example also do this from the axioms of set theory. Set theory only cares about sets. It doesn't know about "numbers". But it turns out, you can construct sets of sets that perfectly represent numbers. For non-negative integers, you could do this: 0 := {} 1 := {{}} 2 := {{{}}} 3 := {{{{}}}} ⋮ or 0 := {} 1 := {{}} 2 := {{}, {}} 3 := {{}, {}, {}} ⋮ or 0 := {} 1 := {0} = {{}} 2 := {0, 1} = {{}, {{}}} 3 := {0, 1, 2} = {{}, {{}}, {{}, {{}}}} ⋮ Now obviously, {{{{}}}} ≠ {{}, {}, {}} ≠ {{}, {{}}, {{}, {{}}}}, so how can they all be 3? They're different ways to represent numbers using just sets, and cannot be mixed. Just like "3", "III", "three", "drei", "trois", "tri" are different ways to represent that number. You have pick one convention of representation / know which convention is used, or there will be confusion. Likewise, _2 as defined in the talk (the "apply twice" thingy) and JavaScript's build-in 2 are not the same thing, but can both be used to represent the more abstract concept of two-ness.
@gnul
@gnul 3 жыл бұрын
Lambda 3 => When()
@austinleedavis
@austinleedavis 2 жыл бұрын
Excel now has lambdas. Prepare your bunkers.
@kavorkagames
@kavorkagames 4 жыл бұрын
I don't think it means what you think it means.
@otesunki
@otesunki 3 жыл бұрын
I do not think it is defined as what you have been accustomed to define it as. ( Not trying to show off, this is a joke. )
@kavorkagames
@kavorkagames 3 жыл бұрын
kzbin.info/www/bejne/moW1fHaOeJV9fMk
@otesunki
@otesunki 3 жыл бұрын
@@kavorkagames WAIT IT'S THERE TOO?!?
@Verrisin
@Verrisin 2 жыл бұрын
so... actor is just a lambda with a mutable closure? ... is the idea? ... (and synchronized) ...hmm.... I guess so...
@atrus3823
@atrus3823 2 жыл бұрын
Doesn't "schema" have 6 letters?
@jeremypnet
@jeremypnet Жыл бұрын
Schemer not schema. It followed the pattern of mapper and planner.
@LambdaJack
@LambdaJack 4 жыл бұрын
Lambda is the GNU GOTO.
@uplink-on-yt
@uplink-on-yt 2 жыл бұрын
So this is how Bret Victor's glorified typewriters came about....
@williamwest3594
@williamwest3594 4 жыл бұрын
Perl's line noise? Horse hockey! If you can't write readable Perlish code, you need a strong talking to. I mean, this is clear as crystal. . E.g., . for $bob ( 'fnord', 'slack' ){ . $multiply = sub{ (pop)* 2 } if $bob eq 'fnord'; . $multiply = sub{ (pop) * 3 } if $bob eq 'slack'; . print $multiply->(21), " " }
@adriandesilva1052
@adriandesilva1052 Жыл бұрын
ayyy, British humour, there is something posh about it..
@isbestlizard
@isbestlizard 3 жыл бұрын
Oh god functional programmers are the worst it's like maths nerds and computer science nerds had babies. I just tell them if you're not allowed side effects how do you ever do anything useful. Check mate.
@baka_geddy
@baka_geddy 2 жыл бұрын
See Haskell!
@simonwang8780
@simonwang8780 3 жыл бұрын
The instinctive zephyr statistically open because diving additonally place between a super pumpkin. erratic, anxious singer
@_vofy
@_vofy 4 жыл бұрын
E=mc^2
@otesunki
@otesunki 3 жыл бұрын
F=ma
@zTJq40sl
@zTJq40sl 3 жыл бұрын
iħΨ̇=HΨ
@jamesmccabe2286
@jamesmccabe2286 3 жыл бұрын
The squeamish cross acromegaly travel because page gratifyingly tire despite a stimulating node. awake, wacky plastic
@titaluna3165
@titaluna3165 3 жыл бұрын
The purring airplane interspecifically spare because place curiosly announce given a knowing tie. three, clever handle
@UODZU-P
@UODZU-P 4 жыл бұрын
He lost me when he said use Powershell
@Parker8752
@Parker8752 4 жыл бұрын
I mean, it's as close to a decent command line as Windows had access to prior to WSL...
@tantalus_complex
@tantalus_complex 2 жыл бұрын
It's the most well-organized popular shell language. It has the symbolic power of Microsoft against it, and it suffers from some verbosity perhaps (subjective, of course), but in itself it is a solid and creative re-imagining of what it takes to be shell language.
@Lammot
@Lammot 4 жыл бұрын
i didn't understand shit :(
@jamesmccabe2286
@jamesmccabe2286 3 жыл бұрын
Yeah, idk, my use of lambda comes in waves.
Refactoring to Immutability - Kevlin Henney
1:03:22
NDC Conferences
Рет қаралды 92 М.
Why? 😭 #shorts by Leisi Crazy
00:16
Leisi Crazy
Рет қаралды 46 МЛН
Bro be careful where you drop the ball  #learnfromkhaby  #comedy
00:19
Khaby. Lame
Рет қаралды 41 МЛН
WHY DOES SHE HAVE A REWARD? #youtubecreatorawards
00:41
Levsob
Рет қаралды 33 МЛН
Kevlin Henney - The Case for Technical Excellence
46:06
Agile meets Architecture
Рет қаралды 7 М.
Using Immutable Data Structures in C# and .NET - Spencer Schneidenbach
47:27
Code? - Kevlin Henney
58:58
DevTernity Conference
Рет қаралды 1,3 М.
The Functional Programmer's Toolkit - Scott Wlaschin
1:05:51
NDC Conferences
Рет қаралды 68 М.
Change your habits: Modern techniques for modern C# - Bill Wagner
55:46
NDC Conferences
Рет қаралды 249 М.
Functional architecture - The pits of success - Mark Seemann
1:00:10
NDC Conferences
Рет қаралды 140 М.
Why Isn't Functional Programming the Norm? - Richard Feldman
46:09
Why i think C++ is better than rust
32:48
ThePrimeTime
Рет қаралды 266 М.
What Do You Mean? - Kevlin Henney [ACCU 2019]
1:28:27
ACCU Conference
Рет қаралды 19 М.
The Worst Programming Language Ever - Mark Rendle - NDC Oslo 2021
1:00:41
NDC Conferences
Рет қаралды 1,3 МЛН
iPhone 15 Pro vs Samsung s24🤣 #shorts
0:10
Tech Tonics
Рет қаралды 9 МЛН
5 НЕЛЕГАЛЬНЫХ гаджетов, за которые вас посадят
0:59
Кибер Андерсон
Рет қаралды 472 М.
POCO F6 PRO - ЛУЧШИЙ POCO НА ДАННЫЙ МОМЕНТ!
18:51