Тёмный

HaskLUL 

ThePrimeTime
Подписаться 449 тыс.
Просмотров 86 тыс.
50% 1

Recorded live on twitch, GET IN
Article
www.wired.com/story/inside-th...
By: Sheon Han | / sheonhan
My Stream
/ theprimeagen
Best Way To Support Me
Become a backend engineer. Its my favorite site
boot.dev/?promo=PRIMEYT
This is also the best way to support me is to support yourself becoming a better backend engineer.
MY MAIN YT CHANNEL: Has well edited engineering videos
/ theprimeagen
Discord
/ discord
Have something for me to read or react to?: / theprimeagenreact
Kinesis Advantage 360: bit.ly/Prime-Kinesis
Hey I am sponsored by Turso, an edge database. I think they are pretty neet. Give them a try for free and if you want you can get a decent amount off (the free tier is the best (better than planetscale or any other))
turso.tech/deeznuts

Наука

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

 

15 май 2024

Поделиться:

Ссылка:

Скачать:

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

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 397   
@j_stach
@j_stach 15 дней назад
A monad is like a burrito that rolls itself then eats itself to make a new burrito
@isodoubIet
@isodoubIet 15 дней назад
Now extend to explain the difference between functors and applicatives lol
@ericjbowman1708
@ericjbowman1708 15 дней назад
Exactly! Perfect description of how xmonad twm works.
@BrunodeSouzaLino
@BrunodeSouzaLino 15 дней назад
And how that differs it from a monoid? Or a functor?
@opposite342
@opposite342 15 дней назад
this is the best monad explanation every wtf
@sigmundwong2489
@sigmundwong2489 15 дней назад
A monoid is a thing that combines two things into one, together with a thing that makes a thing out of nothing, subject to some laws. That is why a monad in C is a monoid in the endofunctor category C: you have a way to combine a double-wrapping into a single-wrapping, together with a way to wrap something, subject to some laws.
@KeremyJato
@KeremyJato 15 дней назад
Never forget Dante's journey through the nine circles of torment in Hask-Hell
@danielreed5199
@danielreed5199 15 дней назад
The 8th circle(fraud) is for bad programmers apparently, according to GPT.
@hugobcdesrosiers5689
@hugobcdesrosiers5689 15 дней назад
Survey: the Prime is secretly starting to learn Haskell and will become a fan within 3 months... >> YES | NO | I'm too scared to answer
@jeremymcadams7743
@jeremymcadams7743 15 дней назад
I'm too scared to answer
@BrunodeSouzaLino
@BrunodeSouzaLino 15 дней назад
That depends on how much time he'll have to spend on monads. The usual line of learning goes semi-linear until you get there. Then you can take a long time to understand monads to the level where you can write code which uses them. It can be a few days, it can be months, you can never learn it....
@weakspirit_
@weakspirit_ 15 дней назад
NO
@complexity5545
@complexity5545 15 дней назад
God I hope not. Haskell has so many real world problems. Most people here probably know haskell usually becomes a hassle. Its one of the main reasons why rust took over. I'm a haskeller and I only use haskell for parsing and compiling and using the library megaparsec and other parsing libraries to convert languages to another language. Haskell is like a perl with more stupid disguised as pompous elitism using borrowed vocabulary and incorrect metaphors from advanced math. I took level 2 imaginary math and it made my journey even worse with Haskell back in 2012 because I expected monad to be like the mathematical definition, but nope. They changed the definition of monad for Haskell. They did that through all of haskell with the phony use of mathematical terms.
@samuraijosh1595
@samuraijosh1595 15 дней назад
@@complexity5545 they didnt change the definition, they just broadened it for programming use case no?? Also, yes building a JSON parser in Haskell is my inly real world use of Haskell lol.
@MrKlarthums
@MrKlarthums 15 дней назад
John Backus led the team at IBM that implemented and released the first Fortran compiler back in 1957. Died back in 2007.
@old_gaffer
@old_gaffer 15 дней назад
Backus was one of the og gigachads
@ccgamedes33
@ccgamedes33 14 дней назад
There is a Fortran '54
@____uncompetative
@____uncompetative 14 дней назад
@@ccgamedes33 That's what I use.
@aboliguu1168
@aboliguu1168 13 дней назад
He probably died from C++ 03, tried to hang in there for like four years and then just couldn’t anymore
@j3pl
@j3pl 12 дней назад
John Backus was a legend, and more programmers today should learn about what these pioneers accomplished with such incredibly limited hardware. He was a Turing award winner, and the paper mentioned was from his acceptance speech.
@velorama-tkkn
@velorama-tkkn 15 дней назад
What I've learned from this article: it's OK if you're useless, as long as you're aesthetically pleasing.
@robtrzci4365
@robtrzci4365 13 дней назад
Bimbo programming is a thing?
@dioneto6855
@dioneto6855 8 дней назад
The opposite is also true, look at C++.
@FourOf92000
@FourOf92000 15 дней назад
to understand the monad, one must become the monad >>= the world is a parameter, everything is declarative if you believe >>= the meta is terse and elegant, functions upon functions upon functions >>= a tall white fountain played.
@user-pe7gf9rv4m
@user-pe7gf9rv4m 15 дней назад
a tall ivory tower played
@tvvoty
@tvvoty 15 дней назад
i'm gonna assume "tall white fountain" is someone coming
@feschber
@feschber 15 дней назад
this should be a metal song
@max3446
@max3446 14 дней назад
@@feschber It's just Vladimir Nabokov if he was an enlightened Haskell enthusiast instead of a cringe 20th-century author.
@JohnDoe-my5ip
@JohnDoe-my5ip 14 дней назад
The Monad tutorial hell is just because the Haskell community have been too busy circlejerking for 30 years straight to explain things using terminology software engineers understand. Thank god the creators of Rust and Lean weren’t so dense... A monad is just an interface that lets you encapsulate side effects in a convenient way. It lets you write imperative-looking code to glue your pure function moonshine together. The monad interface borrowed the name and laws from pure math, which is cool, because it means smarter people than us Grugs can prove things about this abstraction’s correctness and composability. Haskell shouldn’t be as hard as it is. It’s just that too much of the community is full of themselves and _terrible_ at explaining simple things.
@lollertoaster
@lollertoaster 15 дней назад
Yes! This article was such a trip, I'm glad you are covering this. It's literally a guy going "I know Haskell, BTW".
@sub-harmonik
@sub-harmonik 15 дней назад
so that's what it can be used for outside of whitepapers..
@LunarLambda
@LunarLambda 13 дней назад
Monad is a monoid in the category of endofunctors isn't actually that hard to understand at its core the words are just impenetrable It just means (>>=) :: (a -> m b) -> m a -> m b
@Miaumiau3333
@Miaumiau3333 День назад
It means a bit more than that. A monoid is a triple (X, •, e) where • is an associative binary operation and e is the identity element. For example (Int, +, 0) is a monoid. A monad is an endofunctor M together with >>= (as you mentioned) and return :: a -> M a. The point is that if you define a monoid (X, •, e) in the category of endofunctors, you will find that • has the same type signature as >>= and e has the same type signature as return. Also, if you define a monad, then it is always a monoid too (in the category of endofunctors). So a monad is precisely a monoid in the category of endofunctors.
@ViktorKronvall
@ViktorKronvall 22 часа назад
@@Miaumiau3333 Not quite. The monoidal product • would have the type • :: m (m a) -> m a in the category of endofunctors (using Haskell like types). You get bind (>>=) by combining the multiplication • with fmap (M) as `ma >>= f = join (fmap f ma)` > if you define a monoid (X, •, e) in the category of endofunctors The common names for the monoid triple are (T, μ, η) where T is the endofunctor itself, μ the multiplication natural transformation and η the identity natural transformation.
@Miaumiau3333
@Miaumiau3333 15 часов назад
@@ViktorKronvall You're right, thanks for the corrections! • doesn't directly correspond to >>=, and I didn't mention natural transformations. I just wasn't sure how to explain things to someone who is not a category theorist.
@danielreed5199
@danielreed5199 15 дней назад
"“Truck” came from the French word (troc) for “barter.” Originally, if you had no truck with somebody, you refused to trade with him or her" I presume the vehicle "Truck" has a similar etymology, due to it's ability to transport goods for trade, I speculate though.
@VictorMenge
@VictorMenge 15 дней назад
prime writing f# when
@ProjectVastness
@ProjectVastness 15 дней назад
I'll like to see that 💪
@Kane0123
@Kane0123 15 дней назад
I came down the comments to find where F# will have been mentioned. The ugly brother of the lords language - C#
@natebrown2805
@natebrown2805 12 дней назад
probably his idea of a good fp language
@Redyf
@Redyf 15 дней назад
The true monad are the friends we make along the way
@SimGunther
@SimGunther 15 дней назад
That green hurts my eyes. I'm probably the only HaskLUL programmer who despises that specific shade of green.
@samsak1239
@samsak1239 15 дней назад
Those were the days before blue LED was invented.
@SimGunther
@SimGunther 15 дней назад
​@@samsak1239You're talking about the green hackernoon uses, which is the text color of terminals back in the days we both remember. This specific green on the wired article is 🤢
@TosterCx
@TosterCx 15 дней назад
The mic hinges are screaming for lubrication.
@morgane3501
@morgane3501 15 дней назад
look, you are right for 98% of people that they think they love functional programming but they don't, but that's not true for everyone. some people genuinely love functional programming, and i'm one of them. there is nothing more fun than writing increibly elegant functional that nobody else can read
@hamm8934
@hamm8934 15 дней назад
Coming from a formal stats training, functional programming was always more intuitive and straight forward for me than OOP. It took me sooo long to think in an OOP way, and I still prefer functional programming, even if small elements of it like pure functions and having no side effects.
@user-pe7gf9rv4m
@user-pe7gf9rv4m 15 дней назад
@@hamm8934 As a formal stats person, were you ever aware that R, like Haskell, was lazy-evaluated? One of the few languages to have a lazy evaluation strategy.
@hamm8934
@hamm8934 15 дней назад
@@user-pe7gf9rv4m Love R ;) R was probably my first programming language I ever really got into. It has left it's mark on me because I'm the odd duck that thinks base 1 indexing is better for indexing as it doesn't break the 'pointing' metaphor of ordinality like 0 base does (I think 0 base is better for slicing/ranges, but for indexing and iterating, base 1 is superior). That said, I didn't know that about the lazy evaluation strategy. My use of R is quite high-level and primarily DS/analysis focused; I never learned much about the language implementation details. Very interesting, thanks for sharing! Also, for anyone out there reading this: R's DS ecosystem blows pythons out of the water for descriptive stats. It's not even close. Both the breadth and depth of R's regression packages is outstanding.
@taragnor
@taragnor 15 дней назад
There's benefits to FP and there's a lot of useful ideas to come out of it, like the Functor utilities, like map, filter, etc. But there are some jobs where having a mutable state just makes things 10 times easier.
@morgane3501
@morgane3501 15 дней назад
@@taragnor absolutely ! just for communication, if you wanna work with other people in IT that aren't deep into functional, pure functional is probably a terrible idea
@LuisM_Santana
@LuisM_Santana 15 дней назад
Is been a while since I laughed so much at reading/listening a tech article. Awesome
@replikvltyoutube3727
@replikvltyoutube3727 15 дней назад
Nobody tell Primagen about APL
@complexity5545
@complexity5545 15 дней назад
Or J, Kona, Q, a+ ... you remember those. The source code looks like a bird walked across your keyboard. I stopped writing in J and Kona about 10 years ago. Most people don't have a clue about that stuff. I had only one contract with a bank guy that used J for a trading platforms. He wanted kona apps and query translated to J. I know he stopped persuing the migration and went back to paying KX Systems. J lang died or something. He was a J.P. Morgan guy.
@Kiyoliki
@Kiyoliki 11 дней назад
He knows about it, just don't show him J and it's successors and he'll be fine.
@Denominus
@Denominus 15 дней назад
FP isn't nearly as difficult as people make it out to be, it just seems hard when your brain is wired to think differently already. Not a perfect analogy, but if your brain is hard wired to think in imperial units, you will struggle with metric and vice versa. The one you find easiest is the one you started with.
@BrunodeSouzaLino
@BrunodeSouzaLino 15 дней назад
FP is easy until you have to apply it in practice. People often tend to learn better when they can compare things to something they already know. You can't do that in FP beause almost everything is abstraction which stacks on top of more abstractions to the point people get confused to exhaustion. One great example of that is you're not gonna find a single person in the entire Haskell community which can give a satisfactory explanation as to what a monad is.
@MauricioSzabo
@MauricioSzabo 15 дней назад
@@BrunodeSouzaLino FP is not only monads, though. There are dynamic functional programming languages, and if you use them, you only need to rewrite your brain to use functions as primary means of abstraction, and immutable "plain" structures like vectors and maps - no such need for this pile of abstractions that exist in Haskell, Coq, Idris, etc...
@samuraijosh1595
@samuraijosh1595 15 дней назад
@@BrunodeSouzaLino Monads are not inherently FP. FP is mostly just a high-level programing language layer of abstraction over lambda calculus. Everything you model using Monads can be modelled in more fundemental/basic Haskell features/code. But certain patterns, we notice, become very repetitive and hence we group them into common concepts like Monads, Functors, etc. Thats about it. I wrote a full JSON parser in haskell without making any instances for my types in Monad, Functor or Applicative or any other fancy haskell word you may have heard.
@Denominus
@Denominus 15 дней назад
@@BrunodeSouzaLino Here you go: A generic type that wraps a value and implements the "monad" contract (set of functions). When implemented, it allows you to map between wrapped values, combine them etc. It's a general programming pattern that has found its way into most typed languages now in some form. Its got a "jargon" name, but so does everything else. Strictly correct definition? No, I'm sure some academics just flipped a table reading that, but in practice its good enough.
@BrunodeSouzaLino
@BrunodeSouzaLino 14 дней назад
@@Denominus That is what a monad does, not what it is.
@kurtmayer2041
@kurtmayer2041 15 дней назад
a monad is really just a generic type with a continuation. Promise is a monad (Promise.resolve is pure and .then is bind); c++23 introduced monadic funcions on std::optional and std::expected, though the syntax for them sucks (it's all callbacks) (there are wrappers around these to imitate haskell's do notation with coroutines, which pleases me). but the biggest thing in haskell more languages should take inspiration from isn't necessarily monads, but the type system: higher kinded types and a deduction engine that tells you what functions can go in a place also arbitrary operators, those would be very nice to have sometimes
@Ekce
@Ekce 15 дней назад
I've never liked coroutines. They make so much less sense to me than kleisli arrow composition or other monadic functions.
@ulidtko
@ulidtko 14 дней назад
Yeap; type system. Also, simplify: monads are a way to overload the semicolon ; operator from C.
@flupsiupsi
@flupsiupsi 12 дней назад
Arbitrary operators can make programs hard to read for outsiders. And they make me create my own language-within-the-language, which prevents me from writing programs. I assume that part of the success of imperative languages come from their rigid syntax and structure, therefore highly predictable appearance to the reader. The language Elm has abandoned arbitrary operators. It combines the restrictiveness and low expressivity of imperative languages with the elegance of no curly braces and the questionable beauty of invisible function parameters (currying), and it sheds features with every release.
@ulidtko
@ulidtko 12 дней назад
@@flupsiupsi yes; user-definable operators are double-edged sword, having them is a tradeoff. If you read too hard into them, it can be hard to read. Yet, they can also be very elegant to sometimes use as "programmable syntax" helping decompose complicated expressions into (combinations of) simpler ones - which is something imperative languages are poor at doing.
@danielreed5199
@danielreed5199 15 дней назад
"What you think you love, likely isn't what you love" .. that is terrible advice, I just told my wife that... now I am getting divorced.
@robonator2945
@robonator2945 14 дней назад
sounds like what she thought she loved she realized she actually didn't
@chudchadanstud
@chudchadanstud 15 дней назад
>Hate OOP because its convoluted >FP is convoluted but still loves it
@worgenzwithm14z
@worgenzwithm14z 15 дней назад
Just say "I don't want to put in the effort to learn something new". That's fine. Nobody is after your imperative security blanket. You don't need to lie and claim that something that you don't understand yet is convoluted
@chudchadanstud
@chudchadanstud 15 дней назад
@@worgenzwithm14z same can be said for OOP. It not the architecture that's bad, if you put in the effort to learn it it wouldn't be that bad...see what I did there?
@Slashx92
@Slashx92 15 дней назад
​@chudchadanstud the difference is that OOP is not as complex as functional programming just for the existance of monads. OOP is very easily explained, and after a couple of years of using it in any industry gives you 99% of you want to know. If you want more, make a towerdefense or something aking with abstract classes ans w/e to make your types the business languaje. Is rrally not hard at all, just takes practice. FP is hard, and just practice is not enough. You have to actually study if you don't have the fundamentals. For OOP understanding what an instance is, is half of what you need to understand the rest of the concepts
@WHYUNODYLAN
@WHYUNODYLAN 15 дней назад
Ironically, despite the fact that Haskell is exceptionally difficult to learn and write, it's not actually convoluted (though you can write convoluted code, as in all languages). The core of FP, lambda calculus, makes it so that you can very simply evaluate code bit by bit to figure out what's going on. Compare this to the call graphs that form in OOP; all of these objects which are easy to understand individually form a network that is unbelievably convoluted. For an example, look at the old LLVM docs which had all of those absurdly messy graphs. FP isn't convoluted, it's just difficult.
@benniecopeland7388
@benniecopeland7388 15 дней назад
@@Slashx92 I think you forget the growing pains of learning OOP. Inheritance is an easy concept, but hard to master and can make for convoluted and difficult to diagnose bugs. How many patterns and best practices have been devised to help do OOP right? Dependency injection, inversion of control, SOLID principles, etc. How many guardrails have to be written to protect against null references? How many times did something get mutated unexpectedly because it was passed around by reference? How many GoF patterns did you have to learn? FP is hard also, but in different ways. The patterns that may work in OOP to solve a problem have their own solutions in FP. What makes FP better IMHO is by defaulting to what I consider sane language settings. Immutability by default, expressions instead of statements, automatic currying, returning results instead of exceptions, preference for pure functions and total functions, the Type system and discriminated unions, no NULL!!! As for monads, once you understand the concepts, they are applicable to all of the monad types, Result, Option, List, Reader, etc. Sure, it may be hard to grasp at first, but no harder than multi parent inheritance, method overloading, constructors/destructors, copy semantics, etc.
@StatixCinder
@StatixCinder 15 дней назад
Using Haskel is the equivalent of 'I stack cups the fastest' on your buffalo wild wings resume
@detaaditya6237
@detaaditya6237 15 дней назад
Yeahh, that beauty thing is probably what drives me to write code in pipelines/railway in my personal projects. The code become insanely simple, pretty, pure, and composable, but doing it takes more time than ol'reliable imperative code.
@JackMudge
@JackMudge День назад
Lisp was an *enormous* language in 1977, it wasn't quite ready for the ANSI standard but it was the Java of its day -- largely created for practical needs without much regard for theoretical purity. "pure" versions of it existed (one of which we have as Scheme today, for example), but Common Lisp and its predecessors take a thousand-page tome to fully describe.
@jonathanjacobson7012
@jonathanjacobson7012 15 дней назад
M-W: Frisson comes from the French word for shiver which originates from the Latin word for friction. Definitely an orgasm.
@DoctorRainer
@DoctorRainer 15 дней назад
Haskell is a simple language but it has extensions that make language infinitely extendable but you don't really need it. And Haskell is very high-level language, much more high-level than JavaScript to the point that it allows you to use math theory to solve problems on the level of expression and context of the language which is unachievable with something like JavaScript. The thing why people think it's difficult is because of some libraries written by nerds with insanely overcomplicated types but it's not Haskell's issue, those madmans would invent the same in JavaScript if they were to write it
@RobHarrison
@RobHarrison 15 дней назад
Yep, 100% agree. High level but compiles to machine code so also can be fast.
@feschber
@feschber 15 дней назад
AND because people tell you that you need to fully understand the category theory behind monads
@complexity5545
@complexity5545 15 дней назад
My highest math class was Level 2 Imaginary Mathematics. I was familiar with all the mathematical terms that Haskell uses. Haskell's implementation of the mathematical terms like monad, pure function, category theorem, functor, arrows, and other complex stuff is way off based. They pompously and incorrectly use the vocabulary to explain basic knowledge that we already use in OOP design. Its like Perl + Pompous. A regular programmer is not going to grok haskell and its documentation unless you go and relearn what the haskellers thinks that ish means. Haskell documentation and tutorials are like a pompous misinformation. If I didn't already know J, perl, APL c++, prolog, and have a physicist's understanding of math, then reading the Haskell documents would have been hell. I can imagine regular programmers just dropping out of learning Haskell at any detailed level. Haskell is so type involved that it can be used like a APL or mathematical programming languages for theorist and physicists. Other than that, Haskell is overkill. And it causes problems for real world situations. Most companies that I know who use Haskell, use it to weed out programmers just to keep trade secrets.
@samuraijosh1595
@samuraijosh1595 15 дней назад
@@complexity5545 can you give an example of a Haskell typeclass or some other feature that uses a mathematical term as it name but with a totally different definition?
@FiveArc
@FiveArc 15 дней назад
@@complexity5545 what the hell is Level 2 Imaginary Mathematics?
@hephestosthalays2700
@hephestosthalays2700 15 дней назад
“There’s dozens of us! Dozens!”, TObias Funke
@elimgarak3597
@elimgarak3597 15 дней назад
This whole article is one big r/programmingcirclejerk post
@user-hk3ej4hk7m
@user-hk3ej4hk7m 14 дней назад
About the comment of making your kids play elden ring. I had a similar obsession with rocket jumping on TF2, the first 20-40 hours is pure pain, but once you get the hang of it, you're flying all over the map, and it's also really hard to master. Being humbled constantly by a videogame can make you pretty resilient in other stuff without much risk. It's sad when you see people have to go through that irl without much of a safety net.
@ivanheffner2587
@ivanheffner2587 15 дней назад
Ok… I saw a “PERL” in the chat. I assume that was ironic, because I think I’m one of a couple dozen people who really enjoy Perl. Also: Contra and Battle Toads are both great platform games of their time. Legend of Zelda was a great open world RPG in the early years of video game consoles.
@vinapocalypse
@vinapocalypse 10 дней назад
I think you might be. Ages ago I went to a job interview for one of the few programming jobs in the area, and ended up turning down the job because it would have been programming in object oriented Perl. I chose joblessness over Perl
@Saliferous
@Saliferous 15 дней назад
Yes. Functional programming is hard as F to read. (joke intended)
@airkami
@airkami 15 дней назад
Klappa
@nangld
@nangld 15 дней назад
C++ templates are far harder.
@danielreed5199
@danielreed5199 15 дней назад
I find most code hard to read if I haven't written it myself.
@iverbrnstad791
@iverbrnstad791 15 дней назад
@@nangld Yeah, C++ is my day job, trying to figure out what the code I wrote yesterday does is harder than figuring out the haskell i wrote last year means. Signal-to-noise ratio is excellent. Especially compared to C++.
@visitante-pc5zc
@visitante-pc5zc 15 дней назад
@iverbrnstad791 cpp here too. I feel the same
@tamerogeny
@tamerogeny 15 дней назад
That dude is freakin' hilarious! I had a blast. Thanks, Prime.
@cassandrasinclair8722
@cassandrasinclair8722 15 дней назад
I wrote a parser for python in Haskell for a course. Took about 3 days. In C or C++ it'd be 3 weeks.
@BrunodeSouzaLino
@BrunodeSouzaLino 15 дней назад
Though I'm sure it would take you 3 months to explain how the parser works.
@complexity5545
@complexity5545 15 дней назад
This is the main reason to use Haskell. Compilers and parsers and transforming programming languages into another program language.
@samuraijosh1595
@samuraijosh1595 15 дней назад
@@BrunodeSouzaLino well obviously he would not only have to explain the core parsing logic but also the Haskell part of the parser. I think if you have some level of familiarity with Haskell, you'll understand how it works pretty easly.
@victorgabr
@victorgabr 15 дней назад
No surprise pandoc, a fucking parser and text file converter, as written in Haskell.
@BrunodeSouzaLino
@BrunodeSouzaLino 14 дней назад
@@samuraijosh1595 But you see this is often the problem. You cannot explain Haskell to someone which is not familiar with Haskell, something which is possible in other languages.
@canadiannomad2330
@canadiannomad2330 14 дней назад
Love it. I feel like it was written in the author's native language, humor included, then passed to an LLM to translate it, but with some fun instructions about maintaining flowery or technical words as close to the original as possible.
@lucasteo5015
@lucasteo5015 15 дней назад
do kotlin, easy to read procedural functional programming, it isn't even the language that is nice but actually the helper function they have out of the box for collections... filter, map, groupBy, associateBy, reduce, fold .... etc.... all those higher order functions
@redwastaken3363
@redwastaken3363 15 дней назад
I fully agree. It almost feels like a meeting point between the dev. time of something like Scala and TS, which I love. Quick to write and quick to read without being overly simple OR forcing you down one path.
@tempname8263
@tempname8263 15 дней назад
Rust without borrow-checker is just BeefLang
@rsin314159
@rsin314159 15 дней назад
I can proudly say, I beat Battletoads as a kid. It took several years, but I did it. And I had the gaming magazine with the maps for it inside. That game was crazy hard, and the controls were bad AF.
@bastardferret869
@bastardferret869 14 дней назад
The thing with math is discoveries are always "useless" until they aren't.
@thegreenxeno9430
@thegreenxeno9430 15 дней назад
"No truck with" No business with, won't stop for you Less common, more frequently used in traditional delivery businesses, rarely used elsewhere
@trolololo720
@trolololo720 13 дней назад
16:00 It's a monoid in the category of endofunctors, with the product replaced by composition of endofunctors and unit set by the identity endofunctor. What else is there to explain
@mage3690
@mage3690 14 дней назад
"No truck with" is Tom Sawyer/Mark Twain level old. The only reason I know this is because I read the unabridged version.
@senaarth7868
@senaarth7868 15 дней назад
had to create a college project with haskll studying the function paradigm.. wouldnt want it to my worst enemy
@AzureFlash
@AzureFlash 15 дней назад
"The syntax was almost offensively terse" May I introduce you to Uiua
@AndrewBrownK
@AndrewBrownK 15 дней назад
I never heard of uiua before and immediately assumed correctly that it would be stack based
@JohnDoe-my5ip
@JohnDoe-my5ip 14 дней назад
Or brainfuck
@Kiyoliki
@Kiyoliki 11 дней назад
The entirety of the Iversonian languages are code golf level terse (in fact, one of their most common applications is code golfing).
@gtgunar
@gtgunar 15 дней назад
Haskell, Assembly, APL. 3 languages, that really deserve to be learned, becaulse of the considerations and new perspectives they bring. Ask yourself the question, if you could learn any languages instantly, at the tradeoff that after that you can't use that lang, which one would it be? What are the languages that are not a waste of time even if you never use them directl?
@Kiyoliki
@Kiyoliki 11 дней назад
I think that boils down to learning new and different ways of approaching programming that is vastly different from traditional imperative languages.
@chaoslab
@chaoslab 15 дней назад
One of my favourites, many levels of epic-AGIN!
@DylanMatthewTurner
@DylanMatthewTurner 15 дней назад
I love Haskell, but it's just not practical to use. The library support is too small and too imperative.
@ZombieJig
@ZombieJig 15 дней назад
This is why I love F#. You got the whole .NET framework but can still go hard on FP
@luckyLaserface
@luckyLaserface 15 дней назад
I like Scala. You can fall back to Java libraries.
@fsharplove
@fsharplove 15 дней назад
@@ZombieJig F# is my favorite language. C# is not at all on the same level. 6 months using F#. More than a decade using C#.
@schmud143
@schmud143 15 дней назад
@@fsharplovewhat kind of work can someone do with F#?
@fsharplove
@fsharplove 13 дней назад
@@schmud143 "F# is goood for programming", fsharpforfunandprofit. It's good in DDD, complex logic modelling, scripts, data processing, concurrent or parallel processing Compared to C#: - more functional code, less object oriented empty/verbose code. => more robust code - light syntax, fewer keywords to use/know (no or almost no: return , new, public, static, void) - expressive syntax - DU, pattern matching, pipe operator, currying - syntactic sugar : computation expression. Create your DU or record put them in container (seq, list or whatever) and pipe them to functions and that's your code!
@gownerjones1450
@gownerjones1450 14 дней назад
Look Prime, I don't mind you fiddling with the mic but BY GOD put some oil on that boom arm.
@thesaintseiya
@thesaintseiya 15 дней назад
okay but that ending bit was super motivating
@adamwarvergeben
@adamwarvergeben 15 дней назад
Haskell is useful to look nice on paper/in papers
@alexaustin6961
@alexaustin6961 14 дней назад
Wait that's crazy I was looking at the Borgo compiler the other day to see how they built it lmao
@possumcode
@possumcode 15 дней назад
A senior EE dude lectured me on C being bloated and ASM is the way to go (=
@MrEo89
@MrEo89 15 дней назад
QED == “quod erat demonstrandum” Translated it means: “what was to be demonstrated.”
@sirhenrystalwart8303
@sirhenrystalwart8303 15 дней назад
I love you Prime. This was good.
@t0mmy44h
@t0mmy44h 15 дней назад
"no truck with" refusal of association
@danielAgorander
@danielAgorander 13 дней назад
Hey, fav lang from early 70's - B. It's like C, indeed it begat C, but C is all kinds of fancy in comparison. Since, you know, in B there is only the one single data type: the pointer. :D
@nevokrien95
@nevokrien95 15 дней назад
One of my favorite RU-vid programers (tsosen) moved from hasskle to c. The guy makes really high quality stuff u would never guess he used to write hasskle
@arkeynserhayn8370
@arkeynserhayn8370 15 дней назад
Hello and welcome to another programming session with mr. Zozin 😃 That is engrained in my head, awsome content by the way
@nevokrien95
@nevokrien95 15 дней назад
@arkeynserhayn8370 agreed. Seeing his first few c videos is so uncanny because he is such a master today. It's incredible to see how much someone can learn in 3? years
@arkeynserhayn8370
@arkeynserhayn8370 15 дней назад
@@nevokrien95 Not only that, he comes with most raw ideas, the type of ideas that one asks themselves "how he even thought about this project, even my own personal project ideas are not THIS "unconventional" ". In one of his videos he said the goal of his channel and doing all of these weird projects is to make programming interesting again, and i believe he definitely delivered that promise.
@Tomyb15
@Tomyb15 15 дней назад
Didn't he leave haskell because of the tooling?
@nevokrien95
@nevokrien95 15 дней назад
@Tomyb15 no idea but I highly doubt u move to c for tooling these days all of his tooling is self made. I think its a love for low level stuff u can see it in some of the early videos
@vilian9185
@vilian9185 14 дней назад
hell, i don't use google anymore, but seeing google show the most irrelevant results possible was painful
@mgr1282
@mgr1282 14 дней назад
Cardano is written in haskell and had no down time. Solana is written in Rust and had lots of down times.
@gnaarW
@gnaarW 14 дней назад
Kinda unrelated (since Borgo was mentioned): did prime ever say something about goplus?
@MrZendor
@MrZendor 15 дней назад
This was funny.. Heck if I could dump OO and just write one procedure from top to bottom that would be great.. And I do that on my own personal projects. You know, when no one is looking.. Yes I have put one button on a form in C# and wrote one entire procedure. But If I want to look smart and deliver actual production code that a company will pay me for. Well, that is another story. I dabbled with F# when it was new. And I can follow along looking at someone else write functional code. But it takes me more clock cycles to get there. That could be my age though. Heck I started my programming life with Delphi writing pascal..
@bjorntrollowsky4279
@bjorntrollowsky4279 15 дней назад
21:08 The "useless intellectual excercise" of yesterday will become the "useful" and "expedient" method of tomorrow.
@StarContract
@StarContract 15 дней назад
Here is a list of useful software built with Haskell:
@D0Samp
@D0Samp 15 дней назад
I was going to say the SKS public key server for PGP (which had to be deprecated because nobody could be found to fix the fake key spam issue around 2019), but I just checked and despite usual forklore it's written in OCaml, not Haskell.
@JohnDoe-my5ip
@JohnDoe-my5ip 14 дней назад
Pandoc is written in Haskell
@flupsiupsi
@flupsiupsi 12 дней назад
xMonad. I miss it now that I don't use x11 any more. It had an optional config.hs file. You could load setups from people on the internet, and they were using extensions that seemingly changed the whole syntax of the language. Still, never impossible to understand.
@TagetesAlkesta
@TagetesAlkesta 5 дней назад
Hasura
@CristianMolina
@CristianMolina 14 дней назад
Smalltalk dev started on 70s, maybe this is something you could consider bloat?
@TheQxY
@TheQxY 15 дней назад
I was initially very interested in Haskell (and functional programming as a whole) coming from a physics background. But then I found out that these functional ways of doing things are actually just almost always slower abstractions, and it obscufates what the computer actually needs to do. So, it hides control flow and introduces unnecessary abstractions. These are exactly the opposite paradigms of Go, which has become my favourite language.
@cassiothird
@cassiothird 14 дней назад
Humans like to think the solutions/answers are always beautiful, simple or both, but in many cases that's not possible to achieve and pursuing that belief will lead you to worse solutions
@GeorgijTovarsen
@GeorgijTovarsen 15 дней назад
I freaking love Haskell and the 0 projects that I made with it
@mybeme9130
@mybeme9130 14 дней назад
"French is Rated." -- Some guy in chat. lol
@SlammerSimming
@SlammerSimming 15 дней назад
What do you mean we shouldn't write assembly? It was literally humanity's peak. We went to the moon with it, and it runs on fighter jets like the F35
@danielreed5199
@danielreed5199 15 дней назад
Most of my childhood games were written in it, Vic 20 etc.. it is a "If that is my only option, ok then :(" language.
@isodoubIet
@isodoubIet 15 дней назад
@@ParabolicLabs You're barking up entirely the wrong tree
@isodoubIet
@isodoubIet 15 дней назад
@@ParabolicLabs You might be _masturbatorily_ barking up the wrong tree, but you're barking up the wrong tree nevertheless. In a world filled with runtimes, react on the server, python and javascript everywhere, you lay the blame for poor performance at the feet of... C programmers? Seriously?
@isodoubIet
@isodoubIet 15 дней назад
@@ParabolicLabs "Assembly is absolutely peak. I'm so tired of hearing people say you shouldn't learn assembly. This is precisely why modern software is so beyond bloated, slow, and takes up so much RAM. The sentence "BUT THE COMPILER IS BETTER AT IT THAN YOU ARE!" " That's what you said. This sentence only makes sense with reference to fairly low level programming, like C, C++, Fortran, Rust, Zig, etc. Own your words or don't say them at all.
@rusi6219
@rusi6219 15 дней назад
Nobody went to the moon
@JerehmiaBoaz
@JerehmiaBoaz 14 дней назад
COBOL did exist in 1977, it was terribly bloated and had competing standards which were documents about a 1000 pages long.
@3a146
@3a146 8 дней назад
Dont' worry, I am already working Agda, or Cubical Agda more precisely.
@GoddamnAxl
@GoddamnAxl 15 дней назад
I just started learning Haskell yesterday because a course at uni requires it… how timely
@johanngambolputty5351
@johanngambolputty5351 15 дней назад
I so agree about elden ring, dark souls 3 kinda taught me that, I was a bit old to be learning that lesson, towards the end of my undergrad, but still.
@doctorgears9358
@doctorgears9358 15 дней назад
The only problem Prime runs away from: Making functional programming fun to watch
@gravisan
@gravisan 15 дней назад
Haskell programmers are on another level
@ryanrobbins3846
@ryanrobbins3846 15 дней назад
I'm going to loose sleep thinking about 🤯🤬🤬🤬 BATTLE TOADS!
@friedrichdergroe9664
@friedrichdergroe9664 12 дней назад
Wired may not be the best source on programming languages. And "bloat" meant something different in 1977 than it does today. Emacs was considered "bloaty" back in the 80s. Rust's big failing is its borrow checker, and I spent most of my time trying to satisfy that vs. work on the problem at hand. Now, I do Haskell. And I like it.
@LordHonkInc
@LordHonkInc 15 дней назад
"Is Haskell is the Evil Dead 2 of programming languages"? I'd compare it more closely to The Room tbh :P
@NostraDavid2
@NostraDavid2 15 дней назад
Haskell is the Arch of programming languages. I know Haskell, BTW.
@NostraDavid2
@NostraDavid2 15 дней назад
Everyone memes on it, but in reality, it's really handy to know it, even if you don't directly use it, because it's fundamental knowledge transcends it's original language/distro.
@idkwhattonamethisshti
@idkwhattonamethisshti 13 дней назад
more like gentoo.
@fugoogle_was_already_taken
@fugoogle_was_already_taken 15 дней назад
Functional programing is very good at certain class of problems. It also has very practical and beautiful tools for those who understand it. But thats also its biggest flaw; some concepts are not yet very known and for many people they are hard to understand. However, Haskell is still more readable then APL xdd
@JohnDoe-my5ip
@JohnDoe-my5ip 14 дней назад
You don’t need a special keyboard for Haskell like APL either
@anonym-hub
@anonym-hub 15 дней назад
lol. When they said "bloated" they actually meant "too readable" and "too much to read", and let's make that all fit in a single line, ;-)
@bananaboye3759
@bananaboye3759 15 дней назад
More OCaml please. I hate writing FP but watching you do it is great
@Simone-uu8ne
@Simone-uu8ne 15 дней назад
My Prog1 module in uni was Pascal + ANSI C, FML
@elirane85
@elirane85 15 дней назад
I've only recently switched from my obsession with FP to low level system programming with Rust. Oh man, now I have to go back?
@ErazerPT
@ErazerPT 14 дней назад
Damn... Prime made me revisit the past and... now i understand why i like C# so much. I liked Turbo Pascal's Object Pascal a lot back when. And C# isn't all that dissimilar from a birds eye view. Now Java... it's like they took OP and ran wild with as much degeneracy as they could...
@brenogh6019
@brenogh6019 14 дней назад
Courtesy of GPT-4o, this is what John Backus could say about Next.js lol: "Explored #NextJS today. ??‍♂ It's like someone took JavaScript, fed it a Big Mac, and gave it an espresso shot. Remember when small was beautiful? @FunctionalProg where you at? #ModernWebProblems #BackToTheFuture"
@SJohnTrombley
@SJohnTrombley 15 дней назад
If the (theoretically infinite) Fibonacci one liner doesn't make you feel something, Haskell honestly might not be for you, and that's okay. I personally find it incredibly elegant, but I'm also a math nerd, so the fact that it directly expresses the inherent recursion in the Fibonacci sequence is something I find beautiful.
@wezzelinator
@wezzelinator 15 дней назад
It's like looking at the face of God. "Yes, this was the correct way to do it"
@Reydriel
@Reydriel 15 дней назад
I mean, I'm also a math nerd, and the Fibonacci one liner doesn't make me feel anything, because it's the probably the most simple recursion relation you could think of lol Literally just Fn = Fn-1 + Fn-2 (F1 = 1, F2 = 0) Like c'mon bro, there's gotta be a more impressive example than that
@wezzelinator
@wezzelinator 14 дней назад
@@Reydriel what makes you gasp a little when seeing it in Haskell?
@Reydriel
@Reydriel 14 дней назад
@@wezzelinator IDK haven't seen much of Haskell in general, I was just saying that recursive Fibonacci one-liner isn't exactly that impressive IMO, not helped much by the fact that it's also not very useful either
@wezzelinator
@wezzelinator 14 дней назад
@@Reydriel probably not. But being able to express something like fibo so beautifully in a language made me go crazy when I first saw it. Infinite, representation of What Fibo is. Not pretend fibo where we construct something that Acts like fibo. But Fibo itself. "What else can I do with this?"
@bocckoka
@bocckoka 15 дней назад
As a Blizzard employee once said, 'you think you want it, but you don't'. Turns out we do.
@UnidimensionalPropheticCatgirl
@UnidimensionalPropheticCatgirl 15 дней назад
4:07 I mean haskell is technically also procedural, what it isn’t is imperative.
@boredandagitated
@boredandagitated 15 дней назад
Things like this make me no longer think I understand categories. If I like programming little functions and calling em in a row in main (using C, or using c++ like C) then what style is that. Your avi rules btw
@UnidimensionalPropheticCatgirl
@UnidimensionalPropheticCatgirl 15 дней назад
@@boredandagitated C would be procedural ( behavior and data are independent from each other ) imperative ( state can be mutated and shared ). Something like Haskell would be procedural functional ( state is minimized, immutable and not shared )
@UnidimensionalPropheticCatgirl
@UnidimensionalPropheticCatgirl 15 дней назад
@@boredandagitated C is procedural imperative, Haskell is procedural functional, C++ is a thing and something like Java is object-oriented imperative.
@VikramMahendru
@VikramMahendru 15 дней назад
Petition to get prime to play the new COD hardcore swat thingy in hardcore mode just for the comments at 5:10
@Jabberwockybird
@Jabberwockybird 15 дней назад
22:10. Cool Ranch is beautiful and truly awesome tasting
@dapperpanguin994
@dapperpanguin994 15 дней назад
Why is this article written like a Hasbin Hotel character wrote it
@levirouse501
@levirouse501 15 дней назад
What’s the Army of Darkness of programming languages?
@stephanreiken9912
@stephanreiken9912 15 дней назад
There needs to be a programming language Spaghetti.
@Heater-v1.0.0
@Heater-v1.0.0 6 дней назад
Dude, that is how educated people write.
@nangld
@nangld 15 дней назад
Haskell became too mainstream nowadays.
@azeek
@azeek 15 дней назад
Let's go the primerorgen
@RahulSharma-bh1ux
@RahulSharma-bh1ux 14 дней назад
wasnt haskell heavily used in the backend of Yahoo
@catcatcatcatcatcatcatcatcatca
@catcatcatcatcatcatcatcatcatca 15 дней назад
Haskell becoming relevant? Yeah that’s definitely a side effect… Maybe I should give the language a try, I have been writing emacs lisp lately and while what I write is rarely pure or functional, the rare cases are interesting to write.
@AuratticStride
@AuratticStride 15 дней назад
One thing I think you should take a look at is a video called "I used elm in production and it cost me my job"
@InfiniteQuest86
@InfiniteQuest86 15 дней назад
Oh man if you watched Evil Dead 2, you should definitely watch the original spider man movies with them. Made by the same director. Just truly amazing.
@magfal
@magfal 15 дней назад
Postgrest is a fruit of the tree of haskell. One of the best pieces of software I've ever used.
Далее
The Rabbit Is A Scam
56:17
Просмотров 79 тыс.
Cloudflare: Pay Me 120k Or We Shut You Down
30:00
Просмотров 175 тыс.
WHY DOES SHE HAVE A REWARD? #youtubecreatorawards
00:41
Мама ударила дочь #shorts #iribaby
00:17
ThePrimeagen On Running Linux
9:40
Просмотров 177 тыс.
100 Seconds of Rust | Prime Reacts
10:38
Просмотров 303 тыс.
Learning AI, But…
3:41
Просмотров 22 тыс.
"Clean" Code, Horrible Performance
22:41
Просмотров 845 тыс.
`const` was a mistake
31:50
Просмотров 94 тыс.
the new PS4 jailbreak is sort of hilarious
12:21
Просмотров 511 тыс.
I Investigated Why British Cities Keep Going Bankrupt
44:59
De-Google Your Life - Part 1: Start With Chrome
19:31
Индуктивность и дроссель.
1:00
ПК с Авито за 3000р
0:58
Просмотров 1,4 млн
SAMSUNG S23 ULTRA🔥
0:47
Просмотров 138 тыс.
Индуктивность и дроссель.
1:00