When I learned Haskell at college it felt like if a hardcore Mathematician with zero experience in programming was tasked to design a programming language solely based in the definition of what a programming language is.
My lord i've to learn haskell in 3 days for a college exam and came here to see if i could undertand a bit better haskell but this language is... estrange😵🤧🤧
@@_david_mp Haskell in 3 days???? Like maybe learn C in 3 days actually doable if you put 72 hours in, but you ain't learning Haskell completely in 3 days mate.
For the little more advanced users, here is an interpretation of the IO monad that I really liked: If you imagine that you put the state of our entire universe in a record World, then IO could be seen as a World Transformer. Thus, a function with side effects simply maps a state of the World to a new one. For example, putStrLn "Hello World!" takes a World where the screen is blank, and returns a World where "Hello World!" is on the screen :) I find this interpretation beautiful, and it doesn't violate immutability nor does it need side effects
All this is possible thanks to the runtime that says "I won't do this I/O effect now, but if I were, here's how I'd do it" and never tells the user how the world exactly changed. It would just let the user assume that the world changed in some way to maintain the illusion of "purely functional code" that is somehow useful...
Functional programming is so cool. Even if you don't like hardcore functional programming, you can still take parts of it and include it into your own code in for example JavaScript.
Yes, but it makes me sad that Guido said that python will never have tail calls, so out of the box my two loves can never be brought together :( JS is getting there tho.
Learning Haskell was one of the most fun experiences of my life. Even if you never use it, learning it will expand your mind and make you a better programmer.
@@just-do-halee7375 Haskell is basically Rust with a way better type system, also comes with a garbage collector so you don't have to worry about the compiler complaining for hours about pointer lifetimes
@@arhamaneeq1323 I mean, i program in dyalog in my free time. I know it's not that big of a deal in practice. But would say that at least for me it did took a long time to get used to it. You can't just throw all this absurd (intuitive one you know then but totally arbitrary when you start) symbols at me and expect me to just start writing code normally. The learning curve of APL is a little bit absurd. And again, i say this a someone who loves that stupid language
@@sebastiangudino9377 I think with the tab function like those in TryAPL, that is not really that much of a problem. Or maybe that's because I was just started to get into the field of APL weirdness...
Learning Haskell is an adventure. You're learning about currying, pattern matching etc. and you're like "this is such a cool language". Then monads just come out of nowhere and hit you like a brick wall.
Oh, and the best part is Hoogle! If I don't know what function I need but I know what it would need to do, I can roughly describe it by writing it's type (what it should take and what it needs to give me) and I'll get all the functiona that match, (usually only a few, because the types are pretty specific). Of course searching by name works too
Pretty underrated language. I had to learn it a bit for an AI course, but it can be kind of fun for doing basic LeetCode-style questions. It would probably be more fun if I actually learned the difference between the 5 different ways to assign/bind/compare
Best thing of learning Haskell is that you will never finish it. This is a thing with every language of course. But with Haskell is special because depending on your skill level and where you are at the learning curve you will use some tricks or others. Is just like doing Pure Maths, you come up with a trick for a specific problem and refine it further and further until you can define a pattern design or kind of a macro that generalises and then all of a sudden you are solving most of the problems of that field with that. Is much more "abstractable" than other languages.
Seeing you got into functional programming maybe do a Prolog or Lisp in 100 seconds :)). I'm currently studying them in college and I found them a really nice eye opener for functional programming.
I think the main thing is that Prolog is relational/logical, it basically fills in the gap with everything that is true. X + 2 = 4 X = 2 or, validCourses(CS, X). X = a valid course, press ; for the next result. You probably knew that though.
@@begejekan1244 functional programming is a form of declarative programming. But prolog is usually considered a logic programming language, which is another form of declarative programming.
I've only played with Haskell a little bit but the lib that blows me away is Parsec (parsing library). Being able to write interpreters in code that looks just like the BNF grammar sounds awesome! ( I haven't written one myself yet but have seen small examples.)
I am biased, being a tutor for functional programming/Haskell at uni, but... I believe the functional and "immutable by default" paradigm is crucial for going towards bug-free and reusable (re-combinable) code. Yes, it restricts code in certain ways (e.g. no "x = x + 1"), but these restrictions are extremely sensible and they allow a) the programmer to think more clearly (mathematically) and b) the compiler/runtime system to make powerful checks, guarantees and optimizations. For those wondering how incrementing a value a ("x = x + 1") would work in Haskell: You just introduce a new+different name for the new+different value - e.g. "y = x + 1"
Great video! Can you make a detailed video about different open source licenses like Apache, GPL, LGPL etc. It will be very helpful to everyone working with open source software and confused about the licenses.
I think haskells true strength is in its ecosystem. Hoogle and cabal/stack + vscode language integration make everything so much easier. If i need some utility functions or just don't want to implement some algorithm i just use a library by writing single line in my cabal config. I don't think any other language can compete in terms of ecosystem usability.
As i was laying in bed I took my pen and started jotting stuff down, (please note I have programmed well scripted before) anyways I came up with a conclusion,.... functional programming ( of course i hadn't named mine that) instead i spent the day writing bits of code out, writing how I could compile them it, what else would be needed, looking at equations... to then stumble across a video or two on functional programming LOOL (fml), as I am not a massive programmer, and only used py here and there for silly little projects, So it is a massive world opened up to me especially as I thought i was on to something.. anyways great video.
This is really interesting! I recently created a project called Monad to share and discover code snippets, named after a philosophy concept, but it’s cool to see how it’s related to computer science.
Haskell is a super interesting language. I mean you can write quicksort in one line using list comprehensions, you can check for list equality with the good ol ==, and so much. I wouldnt say I'd switch to it from my beloved C and C++, but it's definitely a fun toy language that can be really entertaining to use for coding challenges like advent of code for instance.
I did Haskell for a total of 1 assignment in college and I thought it was really cool. He gave us a definition for a Lambda calculus expression to be stored as a variable, and then step by step got us `to write all the functions necessary to perform a beta reduction on any lambda calculus expression (if I'm remembering right) The definition was something like the form: `Term = Lambda Term | Application Term Term | Var 'x'`, so you could represent any lambda calculus expression with that by replacing "Term" with any of the 3 possible values for Term recursively e.g. Application (Lambda Var 'x') (Application Var 'x' Var 'y') And then we'd just pass that expression into whatever function we're calling it for e.g. beta-reduce (Application (Lambda Var 'x') (Application Var 'x' Var 'y'))
idk if im late to realize but i just noticed that the "LIKE && SUBSCRIBE" at the end of the videos is Jeff's way of saying subscribe only if you like the video.
Yep, pretty much this. ^ I'd just add, that *all* the expressions and -variables- named expressions really evaluate to a single value. That includes the `main`! So for example, since both `print 5` and `print "Hello World"` have the type `IO ()`, you can glue them together into one single value and assign it to `main`. In that case, `main` would be an IO value that prints 5 and then prints the Hello World. What's awesome is that these really behave like regular values. You can juggle them around, put them in lists, etc. and they will do absolutely nothing until one shows up in `main`. Only then, the compiler will make it actually do stuff.
These are so perfect for brushing your teeth. I'm never bored and I get to learn a little something. Very glad I found your channel this year. You've taught me a lot!
Haskell is not half bad. The infinite list / lazy evaluation is truly amazing. The lack of cycles/ having to use recursion/ foldr, etc is a bit crappy but understandable. Way better than Prolog
It would be my favorite language if it didn't have that many stupid gotchas, such as name collisions, data classes not used enough (Text / String fiasco), strings implemented as linked lists..
Being restricted is sometimes very important for learning new ways of thinking when tackling a problem, that's why I think it's important for all coders to do some purely functional programming
If anything, Haskell has a much more powerful abstraction over languages like JavaScript and especially C++ as those languages mimic more closely to how CPUs execute instructions.
Functional programming is cool but I feel like you have to be a mathematician to even begin to understand it properly. Imperative programming feels way more logical for me, even if it's more verbose.
Wrong choice of words, logic is math so technically functional programming is far more logical lol. But yeah imperative still is more intuitive in nowadays programming culture
@@eumim8020 Imperative is intuitive because you just read it from top to bottom and jump around using references, it's like reading through an encyclopedia, intuitive to anyone educated on any level.
I think i'm completly dumb because I didn't see that much of a difference in this video between Functional and Imperative, like he declared variables, he declared a function and then used it ? What is the clear difference between Imperative and Functional I'm confused
I'm always lost when reading the classic functional programming syntaxes. Codebase in F#, R or Haskell confuses me. It's a shame because the value you get from a functional programming architecture is often time very hard to refuse especially on scalable back-ends or IoT projects.
@@ultimatedude5686 Well yeah that's the exact issue I face though, when you come from a long background in C-inspired syntaxes it's harder to adapt. 😕 But I'll learn Haskell next year in my spare time, I'm sure I'll get a good use out of it someday soon.
Pure functional approach is perfect in it's nature, but in reality you can not have reasonably fast code without state and some imperative approach. Lazy evaluation is not entirely free of cost (checking is not free) and garbage collector... To quote (taken from "direction for ISO C++") "Some of the most powerful design techniques combine aspects of traditional object-oriented programming, generic programming, functional programming, and some traditional imperative techniques.". It's not like I'm a hater of Haskell or something but IMO purely functional approach (as a whole language) is too much aimed at perfection rather than pragmatism. "perfect is the enemy of good". Monads, currying, partial application and higher order functions - all of this is also possible in C++ (probably even more efficient), but the syntax and compile times are horrible. I just wish more languages (especially the C family) supported functional style better. Something like __attribute__((pure/const)) in GCC extensions or consteval keyword in C++20. OOP is not a panacea (looking at you, Java).
Been learning Haskell for about 2 months now. Shit is maaaadd confusing but it’s really fun once you figure out. Even tho I say that about most languages this one feels even better to get right!
2:05 Indentation matters, but at the same time: warning: [-Wtabs] Tab character found here. Please use spaces instead. This makes Haskell extremely spacebar heavy programming language. Please select your kehyboard accordingly.
I learned it in very hard time in just two weeks, at the time i hated it but i really enjoy functional programming, after that i really liked haskell and enjoy it
Question (not criticism)! Given the extremely limited time available (which is a very interesting format, btw!) What's the guiding principle to spend the time on "Haskell is a functional language, and here's where that means in general" versus "here's the Maybe type and, yeah, you can use all the Monad stuff on it!" There's no time set aside for type classes or higher order types, which is where Haskell improves on the world compared to, say, ML or Erlang. What's your goal function for what to include/cut? Would you describe C++ without virtual functions or templates? Or without pointers? Or without standard library? (In fact, I'll go see if there is a C++ one right now!) I'm genuinely curious about the process of squeezing into such a tiny box! (Looking forward to "process of making 100 second videos in 100 seconds!")
When I learned Haskell at college it felt like if a hardcore Mathematician with zero experience in programming was tasked to design a programming language solely based in the definition of what a programming language is.
Thanks
Sounds like my kind of language 😎
My lord i've to learn haskell in 3 days for a college exam and came here to see if i could undertand a bit better haskell but this language is... estrange😵🤧🤧
@@_david_mp Haskell in 3 days???? Like maybe learn C in 3 days actually doable if you put 72 hours in, but you ain't learning Haskell completely in 3 days mate.
@@Denis_20096they never said learn completely. Just completely enough to pass the exam
For the little more advanced users, here is an interpretation of the IO monad that I really liked:
If you imagine that you put the state of our entire universe in a record World, then IO could be seen as a World Transformer. Thus, a function with side effects simply maps a state of the World to a new one.
For example, putStrLn "Hello World!" takes a World where the screen is blank, and returns a World where "Hello World!" is on the screen :)
I find this interpretation beautiful, and it doesn't violate immutability nor does it need side effects
Yeah that’s a great explanation
Bind just takes the result from a monad action and then inputs it to another function
IO a ~ (Real World) ->(Real World, a)
You are creating Branches in *MULTIVERSE* mate! :)
All this is possible thanks to the runtime that says "I won't do this I/O effect now, but if I were, here's how I'd do it" and never tells the user how the world exactly changed. It would just let the user assume that the world changed in some way to maintain the illusion of "purely functional code" that is somehow useful...
@@SimGunther You mean, The Laziness?
I'm learning Haskell in university this semester. It's quite hard to learn but makes you feel like a wizard when it works 🧙♂
Exactly in the same position, i have my exam tomorrow xd, but then you rage because the code isn't compiling because of a space..
I don't feel like a wizard when it works.
I don't feel like a wizard because it doesn't work :(
I don't wizard like a feel
@@joaquinbonifacino6964 Let the hate flow through you
Functional programming is so cool. Even if you don't like hardcore functional programming, you can still take parts of it and include it into your own code in for example JavaScript.
Avoiding mutable state is always desired in all programming paradigms.
@@embeddor2230 True. Although it's often ignored and not emphasized enough in OO
@@embeddor2230 yet 90% of functional code uses some sort of state monad.
@@marusdod3685 That is not true.
Yes, but it makes me sad that Guido said that python will never have tail calls, so out of the box my two loves can never be brought together :( JS is getting there tho.
I like these super quick breakdowns of the language and how to get started. Fantastic series thank you for making it
Pls try Elixir in 100 seconds. It's a really nice programming language. Great vid tho
Yeah
agree
yes!!!! and you could cover the phoenix framework with it
My fav language to use
Totally agree
The problem with Haskell is that once you try it, you never come back
All code written in those imperative object oriented languages is brittle and it sucks
well, hi
i left haskell due to lack of jobs
@@tokiomutex4148 i love assembly btw
@@tokiomutex4148storing state in variables is something I will never forego ever again; haskell sucks balls
Learning Haskell was one of the most fun experiences of my life. Even if you never use it, learning it will expand your mind and make you a better programmer.
Wow that was Rust in my life.. so i should learn Haskell Okay
Is there any particular resource you used to learn Haskell that you can recommend?
@@just-do-halee7375 Haskell is basically Rust with a way better type system, also comes with a garbage collector so you don't have to worry about the compiler complaining for hours about pointer lifetimes
@@hojdog "Learn you a Haskell" was a fun read.
@@marusdod3685 Some might say that having a compiler moan until your code is guarenteed correct is better than relying on a non-deterministic GC.
I would probably give you a hug right now! Thank you for introducing Haskell to the community; 😊
Okay, you've gottttt to do APL now. That wonderfully fascinating language deserves your (and our) attention.
no god please no
Well, since you set foot in prohibited grounds and decided to scare the normies, now you have no excuse to not make a video about APL.
We'll get there eventually...
YES!!!!!
Nothing better to get in to programing that a language you literalt can't type with your keyboard. Let's get this ball rolling
@@sebastiangudino9377 It's not like our modern OSs can't switch keyboard layouts on the fly. It takes very little time to get used to it.
@@arhamaneeq1323 I mean, i program in dyalog in my free time. I know it's not that big of a deal in practice. But would say that at least for me it did took a long time to get used to it. You can't just throw all this absurd (intuitive one you know then but totally arbitrary when you start) symbols at me and expect me to just start writing code normally.
The learning curve of APL is a little bit absurd. And again, i say this a someone who loves that stupid language
@@sebastiangudino9377 I think with the tab function like those in TryAPL, that is not really that much of a problem.
Or maybe that's because I was just started to get into the field of APL weirdness...
Learning Haskell is an adventure. You're learning about currying, pattern matching etc. and you're like "this is such a cool language".
Then monads just come out of nowhere and hit you like a brick wall.
You arent wrong about crying.
each monad feels like an entirely different programming paradigm
This is exactly what I feel right now lol. I’m taking a course about functional programming this semester
monads?
@@orkhepaj indeed
Oh, and the best part is Hoogle!
If I don't know what function I need but I know what it would need to do, I can roughly describe it by writing it's type (what it should take and what it needs to give me) and I'll get all the functiona that match, (usually only a few, because the types are pretty specific).
Of course searching by name works too
Hoogle rocks!
Please do Prolog next ! :) It's sufficiently different from the others to deserve its place. And more on Haskell would be cool too IMO.
Prolog broke my brain way more than Haskell
Pretty underrated language. I had to learn it a bit for an AI course, but it can be kind of fun for doing basic LeetCode-style questions. It would probably be more fun if I actually learned the difference between the 5 different ways to assign/bind/compare
What made Prolog click for me was strangely enough learning Erlang as the syntax is inspired by Prolog, but slightly easier.
There's nothing quite like Prolog (in all the good senses).
Best thing of learning Haskell is that you will never finish it. This is a thing with every language of course. But with Haskell is special because depending on your skill level and where you are at the learning curve you will use some tricks or others. Is just like doing Pure Maths, you come up with a trick for a specific problem and refine it further and further until you can define a pattern design or kind of a macro that generalises and then all of a sudden you are solving most of the problems of that field with that. Is much more "abstractable" than other languages.
The trouble with haskell is, first you don't know it and it feels awful. Then, once you learn it well, suddenly every other language feels awful.
I am afraid to try Haskell cause I might become a functional nazi and refuse to write any code with side-effects
You'll refuse to write code with side effects that aren't wrapped into monads
me_irl
@@tokiomutex4148 Or maybe he's correct, no side effects at all, and then he just doesn't write code :D
A program with 0 side effects just heats up the CPU, it’s about isolating side effects in your source code.
That would be a side-effect ...
Seeing you got into functional programming maybe do a Prolog or Lisp in 100 seconds :)).
I'm currently studying them in college and I found them a really nice eye opener for functional programming.
There is also OCaml
Isn't Prolog declarative programming though?
I think the main thing is that Prolog is relational/logical, it basically fills in the gap with everything that is true.
X + 2 = 4
X = 2
or, validCourses(CS, X).
X = a valid course, press ; for the next result.
You probably knew that though.
@@begejekan1244 functional programming is a form of declarative programming. But prolog is usually considered a logic programming language, which is another form of declarative programming.
God please, not prolog x)
I've only played with Haskell a little bit but the lib that blows me away is Parsec (parsing library).
Being able to write interpreters in code that looks just like the BNF grammar sounds awesome!
( I haven't written one myself yet but have seen small examples.)
Keep up the great content, absolutely love each single video you make!
I am biased, being a tutor for functional programming/Haskell at uni, but... I believe the functional and "immutable by default" paradigm is crucial for going towards bug-free and reusable (re-combinable) code. Yes, it restricts code in certain ways (e.g. no "x = x + 1"), but these restrictions are extremely sensible and they allow a) the programmer to think more clearly (mathematically) and b) the compiler/runtime system to make powerful checks, guarantees and optimizations.
For those wondering how incrementing a value a ("x = x + 1") would work in Haskell: You just introduce a new+different name for the new+different value - e.g. "y = x + 1"
Learning Haskell is awesome, it's totally different world of programming
Great video! Can you make a detailed video about different open source licenses like Apache, GPL, LGPL etc. It will be very helpful to everyone working with open source software and confused about the licenses.
I think haskells true strength is in its ecosystem. Hoogle and cabal/stack + vscode language integration make everything so much easier. If i need some utility functions or just don't want to implement some algorithm i just use a library by writing single line in my cabal config. I don't think any other language can compete in terms of ecosystem usability.
Look into npm, cargo or pip, many options for doing that
haskell is making me love math
why must it do this to me
Currently doing haskell at my uni. Learnt more in this video than in a few weeks worth of lectures.
Took a class on that in uni and it was actually pretty damn cool. Makes you use your brain a lot more!
The only fear I have in life is 100 seconds videos just stopping. Please keep em coming i love em.
Omg he actually did it
I've been waiting weeks for this! Finally, FINALLY!!
OMG YESS!!!!!!!!!!!!!!!!!!!! thank you!!!!!!!!! lemme grab some popcorn for 100 seconds
Love your videos man! Your content is indeed fire like your channel logo.
Btw setting up Haskell’s basic tooling is easy these days. Just grab ghcup and you can manage the compiler/LSP server/build tool versions.
I imagine they stole this idea from Rust.
As i was laying in bed I took my pen and started jotting stuff down, (please note I have programmed well scripted before) anyways I came up with a conclusion,.... functional programming ( of course i hadn't named mine that) instead i spent the day writing bits of code out, writing how I could compile them it, what else would be needed, looking at equations... to then stumble across a video or two on functional programming LOOL (fml), as I am not a massive programmer, and only used py here and there for silly little projects, So it is a massive world opened up to me especially as I thought i was on to something..
anyways great video.
This is really interesting! I recently created a project called Monad to share and discover code snippets, named after a philosophy concept, but it’s cool to see how it’s related to computer science.
Please share your wisdom with us
good old haskell I remember having to work on a project with this language in 2013
Haskell is a super interesting language. I mean you can write quicksort in one line using list comprehensions, you can check for list equality with the good ol ==, and so much. I wouldnt say I'd switch to it from my beloved C and C++, but it's definitely a fun toy language that can be really entertaining to use for coding challenges like advent of code for instance.
I did Haskell for a total of 1 assignment in college and I thought it was really cool. He gave us a definition for a Lambda calculus expression to be stored as a variable, and then step by step got us `to write all the functions necessary to perform a beta reduction on any lambda calculus expression (if I'm remembering right)
The definition was something like the form: `Term = Lambda Term | Application Term Term | Var 'x'`, so you could represent any lambda calculus expression with that by replacing "Term" with any of the 3 possible values for Term recursively
e.g. Application (Lambda Var 'x') (Application Var 'x' Var 'y')
And then we'd just pass that expression into whatever function we're calling it for
e.g. beta-reduce (Application (Lambda Var 'x') (Application Var 'x' Var 'y'))
idk if im late to realize but i just noticed that the "LIKE && SUBSCRIBE" at the end of the videos is Jeff's way of saying subscribe only if you like the video.
: if you dont get it, in batch you use the && operator between commands to execute the second one only if the first one is executed successfully.
Just found this channel a few days ago. The content is AMAZING.
Jeff is still my favourite tech youtuber!
The images for monads are so perfectly describing my time with Haskell monads
Great video. Just so you know Haskell has a string type which is literally just an alias for a list of characters
You can use any other string implementations you want depending on your use case
Awesome, thanks so much! And congratulations on being first video I've ever changed the speed to slower so I can keep up :-D
First time hearing this language, thanks Fireship for introduce me to more new programming language
These short videos are good to get to know other technologies you may have never thought looking for.
Yes! finally. I have been waiting for this one!
Still, this is the most procedural and non-functional explaination of haskell i've ever heard :)
Can you suggest any better?
Yep, pretty much this. ^
I'd just add, that *all* the expressions and -variables- named expressions really evaluate to a single value. That includes the `main`!
So for example, since both `print 5` and `print "Hello World"` have the type `IO ()`, you can glue them together into one single value and assign it to `main`.
In that case, `main` would be an IO value that prints 5 and then prints the Hello World.
What's awesome is that these really behave like regular values. You can juggle them around, put them in lists, etc. and they will do absolutely nothing until one shows up in `main`. Only then, the compiler will make it actually do stuff.
These are so perfect for brushing your teeth. I'm never bored and I get to learn a little something. Very glad I found your channel this year. You've taught me a lot!
I started with Hashkell, but never really got to cross the learning barrier, this 100 seconds helped me with that.
Finishing up my first semester of cs and we used racket, a similar functional programming language. Happy to see some love for functional programming
Man the Haskell type system is so nice. If the program type checks there is a 95% chance that it works.
So.... What's a monad?
One of the best paid programming languages right now. Purely functional programming is amazing :)
The only person ever who’s explained what a monad is in 3 seconds!! 🤯
it's just a monoid in the category of endofunctors, what's the problem?
YAAASSSSSSS. Finally! Been Waiting for this forever.
Haskell is not half bad. The infinite list / lazy evaluation is truly amazing. The lack of cycles/ having to use recursion/ foldr, etc is a bit crappy but understandable.
Way better than Prolog
Exactly for this is why we learned haskell in the second semester in my university, there was a whole subject for this language, graphs, trees, etc..
It would be my favorite language if it didn't have that many stupid gotchas, such as name collisions, data classes not used enough (Text / String fiasco), strings implemented as linked lists..
Being restricted is sometimes very important for learning new ways of thinking when tackling a problem, that's why I think it's important for all coders to do some purely functional programming
@@EidosX_ What is wrong with string being list in Haskell? I have never faced a problem with that before, i would like to prevent one in the future
I personally find foldr, map, and the like to be way cleaner and easier to reason about compared to writing for (let i; i< 100; i ++){} all the time
NICELY DONE !
- Data Scientist Mark in North Aurora IL
This reminds me How Powerfully abstracted the Javascript and Even C++ are!
If anything, Haskell has a much more powerful abstraction over languages like JavaScript and especially C++ as those languages mimic more closely to how CPUs execute instructions.
The most beautiful and hard way to write top quality software
Functional programming is cool but I feel like you have to be a mathematician to even begin to understand it properly. Imperative programming feels way more logical for me, even if it's more verbose.
That's because you started with it
Wrong choice of words, logic is math so technically functional programming is far more logical lol. But yeah imperative still is more intuitive in nowadays programming culture
@@eumim8020 Imperative is intuitive because you just read it from top to bottom and jump around using references, it's like reading through an encyclopedia, intuitive to anyone educated on any level.
@@eumim8020 logic isn’t math at all. I even had it as a separate subject that was in no way,shape or form related to math
I think i'm completly dumb because I didn't see that much of a difference in this video between Functional and Imperative, like he declared variables, he declared a function and then used it ? What is the clear difference between Imperative and Functional I'm confused
Super cool! I've always been fascinated by Haskell!
I'm always lost when reading the classic functional programming syntaxes. Codebase in F#, R or Haskell confuses me. It's a shame because the value you get from a functional programming architecture is often time very hard to refuse especially on scalable back-ends or IoT projects.
It's like learning any other programming language, the syntax comes with experience.
@@ultimatedude5686 Well yeah that's the exact issue I face though, when you come from a long background in C-inspired syntaxes it's harder to adapt. 😕
But I'll learn Haskell next year in my spare time, I'm sure I'll get a good use out of it someday soon.
Amazing! You made it sound incredibly simple, thanks!!
Please do extended version with explanation of typeclasses, they are really awesome
This was a great video.
I liked it , I'll search more about it
scala, elixir, lua, ruby, clojure in 100 seconds would be super interesting
Here's Lua in 1 second: Use Python instead.
@@PerryCodes python's too slow to explain it in 1 second
I always have a lot of fun implementing the peano axioms in lisp-like languages.
Learn you a Haskel for Great Good!
My brain just crashed.
Ahhh, Haskell and Prolog gave me a really fun semester. :$
Whaaaaat. Cardano dev time !!! Thanks!
Lets Gooo
I learned more about Haskell from this than 18 lectures at university.
"Fireship is friendship"
Those "Learn You A Haskell" threads on HN always made me feel funny. Now I get it - this is basically the pre-Rust crowd.
Hi
Rust isn't fp
Holy $hit! Haskell.... Always terrifies me
Haskell is a delight. But the learning curve is literally a vertical line
@@sebastiangudino9377 the learning cliff
You finally delivered. Bless.
Pure functional approach is perfect in it's nature, but in reality you can not have reasonably fast code without state and some imperative approach. Lazy evaluation is not entirely free of cost (checking is not free) and garbage collector...
To quote (taken from "direction for ISO C++") "Some of the most powerful design techniques combine aspects of traditional object-oriented programming, generic programming, functional programming, and some traditional imperative techniques.".
It's not like I'm a hater of Haskell or something but IMO purely functional approach (as a whole language) is too much aimed at perfection rather than pragmatism. "perfect is the enemy of good". Monads, currying, partial application and higher order functions - all of this is also possible in C++ (probably even more efficient), but the syntax and compile times are horrible.
I just wish more languages (especially the C family) supported functional style better. Something like __attribute__((pure/const)) in GCC extensions or consteval keyword in C++20. OOP is not a panacea (looking at you, Java).
Explain please blockchan basic programming in one of your shorts. Great work. I really enjoy your videos :)
Would love even course on this subject!
Yeah gonna need a 1 hr video hahah
Thanks for the heads up, now I know to run when I see this language
epic 🔥🔥🔥
Haskell looks really scary with it's exotic syntax. Thanks for the good video.
"Oh wow, that's really interesting"
*never uses Haskell in my life*
Been learning Haskell for about 2 months now. Shit is maaaadd confusing but it’s really fun once you figure out. Even tho I say that about most languages this one feels even better to get right!
Functional programing but taken too far
Love this series
need youtube with dislikes for mobile
Fireship on fire 🔥. Great video 👍🏻
First 🥇
🥇 Gold!
I looked this up on youtube a couple days ago to see if you did it, and here we are.
2:05 Indentation matters, but at the same time:
warning: [-Wtabs]
Tab character found here.
Please use spaces instead.
This makes Haskell extremely spacebar heavy programming language. Please select your kehyboard accordingly.
This is the first time , I am seeing a video about haskell with more than 100k views in recent times.
Love the animation of Haskel 🤩
I stand by the opinion that Haskell has the coolest logo
Little that I know is that this thing makes me download a ton of dependencies and that when it fails, all my haskell programs are put to sleep
Fun fact: There is a Linux Window Manager called XMONAD which is built with configurations that uses Haskell
Not just configurations, it's written in haskell as well
I learned it in very hard time in just two weeks, at the time i hated it but i really enjoy functional programming, after that i really liked haskell and enjoy it
I wouldn't say types in haskell are optional, the fun of haskell is writing the safest code possible; and type checking helps
I feel proud to be a Scotsman, the Glasgow Haskell Compiler was made in the University of Glasgow :)
Question (not criticism)!
Given the extremely limited time available (which is a very interesting format, btw!) What's the guiding principle to spend the time on "Haskell is a functional language, and here's where that means in general" versus "here's the Maybe type and, yeah, you can use all the Monad stuff on it!"
There's no time set aside for type classes or higher order types, which is where Haskell improves on the world compared to, say, ML or Erlang. What's your goal function for what to include/cut?
Would you describe C++ without virtual functions or templates? Or without pointers? Or without standard library? (In fact, I'll go see if there is a C++ one right now!) I'm genuinely curious about the process of squeezing into such a tiny box!
(Looking forward to "process of making 100 second videos in 100 seconds!")