Haskell in 100 Seconds

Поделиться
HTML-код
  • Опубликовано: 8 сен 2024

Комментарии • 901

  • @MasterGeekMX
    @MasterGeekMX 2 года назад +1857

    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.

    • @005xelculotlainco
      @005xelculotlainco Год назад +43

      Thanks

    • @stopper0203
      @stopper0203 Год назад +60

      Sounds like my kind of language 😎

    • @_david_mp
      @_david_mp Год назад +33

      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😵🤧🤧

    • @I_Love_Water
      @I_Love_Water Год назад +43

      @@_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.

    • @SanderMakes
      @SanderMakes Год назад +35

      ​@@I_Love_Waterthey never said learn completely. Just completely enough to pass the exam

  • @EidosX_
    @EidosX_ 2 года назад +2319

    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

    • @levibanks7138
      @levibanks7138 2 года назад +62

      Yeah that’s a great explanation
      Bind just takes the result from a monad action and then inputs it to another function

    • @petrushoc
      @petrushoc 2 года назад +63

      IO a ~ (Real World) ->(Real World, a)

    • @TheMR-777
      @TheMR-777 2 года назад +103

      You are creating Branches in *MULTIVERSE* mate! :)

    • @SimGunther
      @SimGunther 2 года назад +69

      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...

    • @TheMR-777
      @TheMR-777 2 года назад +18

      @@SimGunther You mean, The Laziness?

  • @ben_sch
    @ben_sch 2 года назад +650

    I'm learning Haskell in university this semester. It's quite hard to learn but makes you feel like a wizard when it works 🧙‍♂

    • @joaquinbonifacino6964
      @joaquinbonifacino6964 2 года назад +32

      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..

    • @dannyisrael
      @dannyisrael 2 года назад +23

      I don't feel like a wizard when it works.

    • @MewPurPur
      @MewPurPur 2 года назад +62

      I don't feel like a wizard because it doesn't work :(

    • @codelightsparkles2403
      @codelightsparkles2403 2 года назад +32

      I don't wizard like a feel

    • @tokiomutex4148
      @tokiomutex4148 2 года назад +14

      @@joaquinbonifacino6964 Let the hate flow through you

  • @EddyVinck
    @EddyVinck 2 года назад +731

    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.

    • @embeddor2230
      @embeddor2230 2 года назад +91

      Avoiding mutable state is always desired in all programming paradigms.

    • @teemukarppinen9462
      @teemukarppinen9462 2 года назад +31

      @@embeddor2230 True. Although it's often ignored and not emphasized enough in OO

    • @marusdod3685
      @marusdod3685 2 года назад +7

      @@embeddor2230 yet 90% of functional code uses some sort of state monad.

    • @insertoyouroemail
      @insertoyouroemail 2 года назад +11

      @@marusdod3685 That is not true.

    • @mekelius
      @mekelius 2 года назад +1

      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.

  • @japroz
    @japroz 2 года назад +971

    Pls try Elixir in 100 seconds. It's a really nice programming language. Great vid tho

  • @taylorallred6208
    @taylorallred6208 2 года назад +445

    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
      @just-do-halee7375 2 года назад +10

      Wow that was Rust in my life.. so i should learn Haskell Okay

    • @hojdog
      @hojdog 2 года назад +1

      Is there any particular resource you used to learn Haskell that you can recommend?

    • @marusdod3685
      @marusdod3685 2 года назад +15

      @@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

    • @leoaso6984
      @leoaso6984 2 года назад +21

      @@hojdog "Learn you a Haskell" was a fun read.

    • @StuWilloughby
      @StuWilloughby 2 года назад +31

      @@marusdod3685 Some might say that having a compiler moan until your code is guarenteed correct is better than relying on a non-deterministic GC.

  • @leoaso6984
    @leoaso6984 2 года назад +1443

    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.

    • @deidyomega
      @deidyomega 2 года назад +107

      You arent wrong about crying.

    • @marusdod3685
      @marusdod3685 2 года назад +70

      each monad feels like an entirely different programming paradigm

    • @wingjaigaming8240
      @wingjaigaming8240 2 года назад +15

      This is exactly what I feel right now lol. I’m taking a course about functional programming this semester

    • @orkhepaj
      @orkhepaj 2 года назад +2

      monads?

    • @marusdod3685
      @marusdod3685 2 года назад +9

      @@orkhepaj indeed

  • @Blazeking636
    @Blazeking636 2 года назад +90

    I like these super quick breakdowns of the language and how to get started. Fantastic series thank you for making it

  • @arhamaneeq1323
    @arhamaneeq1323 2 года назад +38

    Okay, you've gottttt to do APL now. That wonderfully fascinating language deserves your (and our) attention.

  • @mskiptr
    @mskiptr 2 года назад +11

    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

    • @Bratjuuc
      @Bratjuuc 2 года назад

      Hoogle rocks!

  • @giuco884
    @giuco884 2 года назад +203

    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.

    • @brucewayne2480
      @brucewayne2480 2 года назад +4

      There is also OCaml

    • @begejekan1244
      @begejekan1244 2 года назад +7

      Isn't Prolog declarative programming though?

    • @dannyisrael
      @dannyisrael 2 года назад +8

      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.

    • @JeyPeyy
      @JeyPeyy 2 года назад +18

      @@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.

    • @Nolkaloid
      @Nolkaloid 2 года назад

      God please, not prolog x)

  • @yan-amar
    @yan-amar 2 года назад +90

    Please do Prolog next ! :) It's sufficiently different from the others to deserve its place. And more on Haskell would be cool too IMO.

    • @randomizednamme
      @randomizednamme 2 года назад +9

      Prolog broke my brain way more than Haskell

    • @Daniel_WR_Hart
      @Daniel_WR_Hart Год назад +3

      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

    • @hansisbrucker813
      @hansisbrucker813 Год назад +2

      What made Prolog click for me was strangely enough learning Erlang as the syntax is inspired by Prolog, but slightly easier.

    • @atava85
      @atava85 11 месяцев назад +1

      There's nothing quite like Prolog (in all the good senses).

  • @ransomecode
    @ransomecode 2 года назад +12

    I would probably give you a hug right now! Thank you for introducing Haskell to the community; 😊

  • @kazemanu
    @kazemanu 2 года назад +10

    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.

  • @gaius_enceladus
    @gaius_enceladus 2 года назад +20

    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.)

  • @NikiHerl
    @NikiHerl 2 года назад +8

    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"

  • @MicheleRiva
    @MicheleRiva 2 года назад +518

    The problem with Haskell is that once you try it, you never come back

    • @tokiomutex4148
      @tokiomutex4148 2 года назад +69

      All code written in those imperative object oriented languages is brittle and it sucks

    • @dewigesrek5651
      @dewigesrek5651 2 года назад +6

      well, hi

    • @dewigesrek5651
      @dewigesrek5651 2 года назад +69

      i left haskell due to lack of jobs

    • @yOkay_
      @yOkay_ Год назад +23

      @@tokiomutex4148 i love assembly btw

    • @pubgplayer1720
      @pubgplayer1720 Год назад

      ​@@tokiomutex4148storing state in variables is something I will never forego ever again; haskell sucks balls

  • @Lin_The_Cat_
    @Lin_The_Cat_ Год назад +16

    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.

  • @0bmerlin
    @0bmerlin 2 года назад +26

    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.

    • @devtech4661
      @devtech4661 2 года назад +10

      Look into npm, cargo or pip, many options for doing that

  • @MYMPSWORLD
    @MYMPSWORLD 2 года назад +19

    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.

  • @neesh774
    @neesh774 2 года назад +4

    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.

    • @vulture-6
      @vulture-6 Год назад +1

      Please share your wisdom with us

  • @callyral
    @callyral 8 месяцев назад +3

    haskell is making me love math
    why must it do this to me

  • @SEKUNHO
    @SEKUNHO 2 года назад +6

    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.

    • @evanhowlett9873
      @evanhowlett9873 2 года назад +2

      I imagine they stole this idea from Rust.

  • @StephenGillie
    @StephenGillie 2 года назад +2

    Those "Learn You A Haskell" threads on HN always made me feel funny. Now I get it - this is basically the pre-Rust crowd.

  • @hashbrown9245
    @hashbrown9245 2 года назад +5

    Finishing up my first semester of cs and we used racket, a similar functional programming language. Happy to see some love for functional programming

  • @ProgrammingWithRook
    @ProgrammingWithRook 9 месяцев назад +1

    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.

  • @alessiopetrin549
    @alessiopetrin549 2 года назад +6

    Keep up the great content, absolutely love each single video you make!

  • @DjLeonSKennedy
    @DjLeonSKennedy 2 года назад +4

    Learning Haskell is awesome, it's totally different world of programming

  • @EvilTim1911
    @EvilTim1911 2 года назад +8

    "Oh wow, that's really interesting"
    *never uses Haskell in my life*

  • @dyslexicsoap7605
    @dyslexicsoap7605 Год назад

    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'))

  • @DomskiPlays
    @DomskiPlays 2 года назад +6

    Took a class on that in uni and it was actually pretty damn cool. Makes you use your brain a lot more!

  • @UnspeakableNightmare
    @UnspeakableNightmare 2 года назад +1

    Currently doing haskell at my uni. Learnt more in this video than in a few weeks worth of lectures.

  • @sachamorgese7280
    @sachamorgese7280 2 года назад +131

    I am afraid to try Haskell cause I might become a functional nazi and refuse to write any code with side-effects

    • @tokiomutex4148
      @tokiomutex4148 2 года назад +7

      You'll refuse to write code with side effects that aren't wrapped into monads

    • @okk2094
      @okk2094 2 года назад

      me_irl

    • @deidyomega
      @deidyomega 2 года назад +5

      @@tokiomutex4148 Or maybe he's correct, no side effects at all, and then he just doesn't write code :D

    • @randomizednamme
      @randomizednamme 2 года назад +6

      A program with 0 side effects just heats up the CPU, it’s about isolating side effects in your source code.

    • @lawrencedoliveiro9104
      @lawrencedoliveiro9104 2 года назад

      That would be a side-effect ...

  • @CodingPhase
    @CodingPhase 2 года назад

    good old haskell I remember having to work on a project with this language in 2013

  • @farhansangaji5029
    @farhansangaji5029 2 года назад +10

    First time hearing this language, thanks Fireship for introduce me to more new programming language

  • @mskiptr
    @mskiptr 2 года назад +1

    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.

  • @brettm4179
    @brettm4179 2 года назад +15

    Great video. Just so you know Haskell has a string type which is literally just an alias for a list of characters

    • @gritcrit4385
      @gritcrit4385 2 года назад +2

      You can use any other string implementations you want depending on your use case

  • @stoef
    @stoef 2 года назад +1

    The images for monads are so perfectly describing my time with Haskell monads

  • @JR-mk6ow
    @JR-mk6ow 2 года назад +37

    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

    • @joaquinbonifacino6964
      @joaquinbonifacino6964 2 года назад +3

      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..

    • @EidosX_
      @EidosX_ 2 года назад +4

      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..

    • @JeyPeyy
      @JeyPeyy 2 года назад +1

      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

    • @sebastiangudino9377
      @sebastiangudino9377 2 года назад

      @@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

    • @vyole1271
      @vyole1271 2 года назад +6

      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

  • @evertonc1448
    @evertonc1448 2 года назад +463

    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.

    • @Fireship
      @Fireship  2 года назад +178

      We'll get there eventually...

    • @sebastiangudino9377
      @sebastiangudino9377 2 года назад +45

      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

    • @arhamaneeq1323
      @arhamaneeq1323 2 года назад +3

      @@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.

    • @sebastiangudino9377
      @sebastiangudino9377 2 года назад +12

      @@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

    • @kaiserouo
      @kaiserouo 2 года назад

      @@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...

  • @carltongordon
    @carltongordon 2 года назад +4

    OMG YESS!!!!!!!!!!!!!!!!!!!! thank you!!!!!!!!! lemme grab some popcorn for 100 seconds

  • @hadipawar2539
    @hadipawar2539 2 года назад +1

    The only fear I have in life is 100 seconds videos just stopping. Please keep em coming i love em.

  • @bratuka
    @bratuka 2 года назад +2

    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.

    • @bratuka
      @bratuka 2 года назад +1

      : 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.

  • @juanandrescastillofuenmayo6619
    @juanandrescastillofuenmayo6619 2 года назад +1

    I've been waiting weeks for this! Finally, FINALLY!!

  • @vypxl
    @vypxl 2 года назад +12

    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 :)

  • @jmecow
    @jmecow Год назад +1

    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!

  • @kelkiiii
    @kelkiiii 2 года назад +10

    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!

  • @nicholas_obert
    @nicholas_obert 2 года назад

    These short videos are good to get to know other technologies you may have never thought looking for.

  • @EidosX_
    @EidosX_ 2 года назад +7

    Omg he actually did it

  • @drsubtracto
    @drsubtracto 2 года назад +1

    Love your videos man! Your content is indeed fire like your channel logo.

  • @user-hd7ju4wu4b
    @user-hd7ju4wu4b 2 года назад +5

    Please do extended version with explanation of typeclasses, they are really awesome

  • @DipsankarMaity
    @DipsankarMaity 2 года назад

    I started with Hashkell, but never really got to cross the learning barrier, this 100 seconds helped me with that.

  • @mekelius
    @mekelius 8 месяцев назад +4

    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.

  • @xenialxerous2441
    @xenialxerous2441 2 года назад +2

    Amazing! You made it sound incredibly simple, thanks!!

  • @markschellhas
    @markschellhas 2 года назад +5

    The only person ever who’s explained what a monad is in 3 seconds!! 🤯

    • @MakiC
      @MakiC 2 года назад +9

      it's just a monoid in the category of endofunctors, what's the problem?

  • @_skf_2262
    @_skf_2262 Год назад +1

    One of the best paid programming languages right now. Purely functional programming is amazing :)

  • @oscarfal
    @oscarfal 2 года назад +18

    scala, elixir, lua, ruby, clojure in 100 seconds would be super interesting

    • @PerryCodes
      @PerryCodes 2 года назад +9

      Here's Lua in 1 second: Use Python instead.

    • @kirinplays3822
      @kirinplays3822 2 года назад

      ​@@PerryCodes python's too slow to explain it in 1 second

  • @MarinelCuculj
    @MarinelCuculj 2 года назад +1

    Explain please blockchan basic programming in one of your shorts. Great work. I really enjoy your videos :)

  • @MercyFromOverwatch2
    @MercyFromOverwatch2 2 года назад +4

    Jeff is still my favourite tech youtuber!

  • @eddieh7962
    @eddieh7962 2 года назад

    Man the Haskell type system is so nice. If the program type checks there is a 95% chance that it works.

  • @yashptel
    @yashptel 2 года назад +3

    My brain just crashed.

  • @PahpriosGaming
    @PahpriosGaming 2 года назад

    Just found this channel a few days ago. The content is AMAZING.

  • @0xBerto
    @0xBerto 2 года назад +5

    Whaaaaat. Cardano dev time !!! Thanks!

  • @marwan.v1511
    @marwan.v1511 2 года назад +1

    This was a great video.
    I liked it , I'll search more about it

  • @krtirtho
    @krtirtho 2 года назад +19

    Holy $hit! Haskell.... Always terrifies me

    • @sebastiangudino9377
      @sebastiangudino9377 2 года назад +8

      Haskell is a delight. But the learning curve is literally a vertical line

    • @griof
      @griof 2 года назад +2

      @@sebastiangudino9377 the learning cliff

  • @gnvageesh6467
    @gnvageesh6467 2 года назад +1

    Fun fact: There is a Linux Window Manager called XMONAD which is built with configurations that uses Haskell

    • @uditkarode
      @uditkarode 2 года назад

      Not just configurations, it's written in haskell as well

  • @TheMR-777
    @TheMR-777 2 года назад +3

    This reminds me How Powerfully abstracted the Javascript and Even C++ are!

    • @zoriiginalx7544
      @zoriiginalx7544 2 дня назад

      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.

  • @m4rt_
    @m4rt_ 11 месяцев назад +1

    well ... there is do notation in Haskell, so you can kinda do imperative programming, but also not really
    Also, you don't need a do block to do IO

  • @abh1yan
    @abh1yan 2 года назад +3

    "Fireship is friendship"

  • @Zero_Hour
    @Zero_Hour 2 года назад +1

    A monad is a monoid in the category of endofunctors

  • @charlesm.2604
    @charlesm.2604 2 года назад +5

    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
      @ultimatedude5686 2 года назад

      It's like learning any other programming language, the syntax comes with experience.

    • @charlesm.2604
      @charlesm.2604 2 года назад +1

      @@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.

  • @Filaxsan
    @Filaxsan 2 года назад

    Super cool! I've always been fascinated by Haskell!

  • @0xBerto
    @0xBerto 2 года назад +5

    Yeah gonna need a 1 hr video hahah

  • @troglodytto
    @troglodytto 2 года назад

    YAAASSSSSSS. Finally! Been Waiting for this forever.

  • @SillyNaughty
    @SillyNaughty 2 года назад +5

    So.... What's a monad?

  • @SimGunther
    @SimGunther 2 года назад +2

    The only reason that it's possible to do syscalls in a "purely functional" language like Haskell is because of how state monads assume a "closed world" environment where specific things like writing to a console or reading user input is deferred to the runtime. Sometimes lazy I/O is faster than C code, sometimes not, so measure whenever possible.
    Also, it is possible to do data oriented design in Haskell, but there are some things that C lets you do that Haskell won't as far as specific kinds of eager calculations and manual memory allocation unless you use the C FFI/LLVM modules.

  • @JanDalhuysen
    @JanDalhuysen 2 года назад +3

    epic 🔥🔥🔥

  • @mathiasayivor
    @mathiasayivor 2 года назад +2

    Love this series

  • @socketbyte5348
    @socketbyte5348 2 года назад +28

    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.

    • @user-hd7ju4wu4b
      @user-hd7ju4wu4b 2 года назад +4

      That's because you started with it

    • @eumim8020
      @eumim8020 2 года назад +4

      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

    • @Eagle3302PL
      @Eagle3302PL 2 года назад +6

      @@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.

    • @Nikola9517
      @Nikola9517 2 года назад +7

      @@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

    • @ryg6434
      @ryg6434 2 года назад +1

      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

  • @artgreg2296
    @artgreg2296 2 года назад +1

    could have mentionned a big party of cardano ecosystem based on haskell

  • @Xeverous
    @Xeverous 2 года назад +3

    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).

  • @Joker22593
    @Joker22593 2 года назад

    I always have a lot of fun implementing the peano axioms in lisp-like languages.
    Learn you a Haskel for Great Good!

  • @snipzmattio5887
    @snipzmattio5887 2 года назад +8

    Functional programing but taken too far

  • @binchicken9206
    @binchicken9206 2 года назад

    Awesome, thanks so much! And congratulations on being first video I've ever changed the speed to slower so I can keep up :-D

  • @pastuh
    @pastuh 2 года назад +3

    need youtube with dislikes for mobile

  • @Hamish_A
    @Hamish_A 9 месяцев назад +1

    Far more people are beginning to be exposed to creating functional code than ever before due to Power Query and the M language in Excel of all things! I've been interested in the functional paradigm for a while, but put it to one side, then realised I'd started to write functional code in M when i had a particular problem to solve and chose to try out power query due to the sources of data making excel a reasonable choice.

  • @SunDev1
    @SunDev1 2 года назад +3

    First 🥇

  • @ThePotatoChronicler
    @ThePotatoChronicler 2 года назад +1

    Didn't expect this

  • @benarcher372
    @benarcher372 2 года назад

    The most beautiful and hard way to write top quality software

  • @hunterkohler3697
    @hunterkohler3697 2 года назад

    Lazy evaluation can also bring down performance! In fact, the way that it can bring down performance, can also be a way to increase performance: cache locality.

  • @the34zydc.64
    @the34zydc.64 2 года назад

    I looked this up on youtube a couple days ago to see if you did it, and here we are.

  • @germimonte
    @germimonte 2 года назад

    I wouldn't say types in haskell are optional, the fun of haskell is writing the safest code possible; and type checking helps

  • @user-zo2sw1xl6f
    @user-zo2sw1xl6f 2 года назад

    There is also Clean IDE which is studied in ELTE. Everyone hate this subject although it is pretty fun

  • @MrJanus19
    @MrJanus19 2 года назад +1

    need scala now

  • @johnnyt.2523
    @johnnyt.2523 2 года назад +1

    Ahhh, Haskell and Prolog gave me a really fun semester. :$

  • @Kevin-jc1fx
    @Kevin-jc1fx 2 года назад

    Haskell looks really scary with it's exotic syntax. Thanks for the good video.

  • @Htbaa
    @Htbaa 2 года назад +1

    Should've included a bit more about types such as Maybe, Either. Learn You A Haskell For Great Good is such a cool Haskell book and a proper introduction to the language. It has been years since I used Haskell, but had a lot of fun using it back then. If I ever get some spare time again I might just play around with it again.

  • @NotherPleb
    @NotherPleb 2 года назад

    Thanks for the heads up, now I know to run when I see this language

  • @jewpcabra666
    @jewpcabra666 2 года назад +1

    Hearing the word haskell gives me the heebie jeebies from college, but great descriptor. Love how you just completely moved around monads and typing ;)
    Functors are like mini monads that also sucked

    • @luuclucas
      @luuclucas Год назад

      A function is just any datatype over which you can map a function.
      iirc the only function you have to implement is fmap :: ( a -> b) -> f a -> f b

  • @russ2001master
    @russ2001master 2 года назад

    You finally delivered. Bless.