I Learned Haskell In 15 Years

  Рет қаралды 93,977

ThePrimeTime

ThePrimeTime

14 күн бұрын

Recorded live on twitch, GET IN
Article
duckrabbit.tech/articles/lear...
By: Evan Silberman
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
Get production ready SQLite with Turso: turso.tech/deeznuts

Пікірлер: 347
@mattymattffs
@mattymattffs 13 күн бұрын
We use Haskell at work for specific planning functionality. Called from CPP. This is because we can prove they're correct. It's also faster than the cpp code we produced. Eventually maybe the cpp would end up faster, but the Haskell was so effortless
@filip0x0a98
@filip0x0a98 13 күн бұрын
Would you mind elaborating on that? I am considering taking an extra course in haskell but would like to know how it is used in industry.
@MorningNapalm
@MorningNapalm 13 күн бұрын
I never thought I would see Haskell and effortless in one sentence, with no negation or sarcasm.
@andrearaimondi882
@andrearaimondi882 13 күн бұрын
@@MorningNapalmthat’s because they can prove they are correct. This means they likely have someone on staff who has a Maths degree.
@knowledgedrinker7002
@knowledgedrinker7002 13 күн бұрын
I can recommend Haskell from First Principles, which is a good way to understand the language and the FP mindset with a lot of exercises and deep simple explanations. It's not as difficult as people think.
@svenkuffer4512
@svenkuffer4512 13 күн бұрын
@@andrearaimondi882 *CS degree, you learn that in Software Engineering and it involves mathematical logic. In this case formal methods (SAT), there are logic languages for that, like B-method. This makes it very easy to go from specification to implementation.
@dforj9212
@dforj9212 13 күн бұрын
Prime making fun of Haskell because he knows he could fall in the FP rabbit hole
@user-tx4wj7qk4t
@user-tx4wj7qk4t 9 күн бұрын
It's because he doesn't understand it at all so it makes him feel small
@Frostbytedigital
@Frostbytedigital 13 күн бұрын
The netbook fiasco had me emotionally on edge for a whole paragraph till he glanced at chat.
@MorningNapalm
@MorningNapalm 13 күн бұрын
LOL, jerk. Me too.
@lamspam
@lamspam 12 күн бұрын
haha it's funny because the "netbook" was almost a marketing term for a specific kind of notebook, or a slightly smaller notebook, so I can understand him reading it wrong the first time lol. I also think it was only a thing for a few years while the term "notebook" kept going
@PromptStreamer
@PromptStreamer 12 күн бұрын
It’s interesting if you’ve always been a very keen person of letters who notices spelling very acutely, when someone is borderline dyslexic and pronounces Anarchaia as “anar-chaya”, suddenly even a very brilliant person looks unintelligent for a moment
@Frostbytedigital
@Frostbytedigital 12 күн бұрын
@@PromptStreamer I find that, to me it just exposes more about how that person's brain works rather than making me feel like they're unintelligent. I KNOW that to be false so seeing that for what it is, becomes easier I guess. But I do understand where you're coming from. It's jarring regardless
@throwaway3227
@throwaway3227 12 күн бұрын
So Haskell is actually pretty easy to use, and it mostly doesn't even get that hard when introducing Monads (unless you go into the MonadTrans[former] stuff with multiple Monads at the same time). What makes Monads hard is when you implement your own Monads. The worst thing in Haskell for a newbie is probably trying to figure out memory leaks in lazy types. There is also some operators which are confusing in the beginning, such as (.) and (#), but hoogle is great for this. That said, I mostly program in Rust now, but there are often problems where I think that "this will turn into a complexity explosion (if it's even doable in Rust's type system), but it would be pretty much a one liner in Haskell".
@AlexRodriguez-gb9ez
@AlexRodriguez-gb9ez 11 күн бұрын
One difficulty of Haskell is when you figure out that your function shouldn't have been a -> b but f a -> f b, or a -> f b, or f a -> b, or whatever...
@mattymattffs
@mattymattffs 13 күн бұрын
State management is the only programming paradigm that actually exists
@remrevo3944
@remrevo3944 13 күн бұрын
State? What is state? I only know some registers and memory. (Some of which isn't even memory, but actually memory-mapped-io.)
@gwentarinokripperinolkjdsf683
@gwentarinokripperinolkjdsf683 13 күн бұрын
@@remrevo3944that is your state (except the memory mapped-io, but the memory mapped io can effect state
@kebien6020
@kebien6020 12 күн бұрын
State? We have a monad for that, it combines the capabilities of the Reader monad and the Writer monad.
@biggerdoofus
@biggerdoofus 12 күн бұрын
@@remrevo3944 I think state is the parts of those you actually use in the code you're currently writing, but I'm not sure. I keep hearing about state somehow being "global" and that being bad somehow. Maybe it's a cache difference. Also not sure if the read-only parts count.
@ktxed
@ktxed 11 күн бұрын
that's programming rite dere
@newsofthenerd
@newsofthenerd 13 күн бұрын
Yeah Xmonad mentioned. I love me some haskell tiling.
@remrevo3944
@remrevo3944 13 күн бұрын
Was my first tiling window manager. And caused my taste for windowed fullscreen.
@newsofthenerd
@newsofthenerd 13 күн бұрын
@remrevo3944 yeah I only use fullscreen
@kahnfatman
@kahnfatman 13 күн бұрын
Yup. Elm taught me Haskell. I started to learn Haskell in 2015. i really started to understand the language in 2021. m word because there is a class of functions that can be applied on the applicative functors/monoids, like mconcat, mfilter… To learn Haskell means to change your worldview.
@lamspam
@lamspam 12 күн бұрын
did you ever take a class in college that required you to learn Haskell, like a functional programming course?
@TankorSmash
@TankorSmash 12 күн бұрын
Yeah Haskell was way easier to learn after learning Elm. I'm glad to hear ThePrimeagen respects both languages so much! I'd be interested to see how close you can make a TUI in Haskell that would do the tower defense stuff.
@kahnfatman
@kahnfatman 12 күн бұрын
@@lamspam I did only OOP during formal higher education. Some kids whispered the term “Haskell” during a class in 2009. When React was touted as “functional” and “declarative” around 2015, I started the functional journal head-on.
@Qrzychu92
@Qrzychu92 12 күн бұрын
@@lamspam I took "scala programming" in university, but I learned that Scala is supposed to be functional just couple years ago :D that course sucked balls
@AlexRodriguez-gb9ez
@AlexRodriguez-gb9ez 12 күн бұрын
Use Clojure/Racket/OCAML its an easier Haskell then learning Haskell makes more sense.
@thedarkknight-3894
@thedarkknight-3894 13 күн бұрын
Hold my functor!
@GeorgijTovarsen
@GeorgijTovarsen 13 күн бұрын
for about 15 years
@ZombieJig
@ZombieJig 13 күн бұрын
Functor? Damn near killed her.
@MikkoRantalainen
@MikkoRantalainen 13 күн бұрын
15:55 The idea that DOM is so slow that you can run *javascript* to emulate the tasks that DOM is supposed to do in C++ code is a long term plan sounds a bit weird idea to me. Unsurprisingly the browser native implementation of DOM has gotten much better during years.
@HyuLilium
@HyuLilium 10 күн бұрын
Virtualization for huge lists is still useful unfortunately. It should be built into the browser for sure
@redcollard3586
@redcollard3586 13 күн бұрын
Thank you, Prime. The burrito metaphor has finally made everything clear to me. You got however many layers of logic all wrapped up in an i/o layer that makes it portable. Holy guacamole.
@lamspam
@lamspam 12 күн бұрын
yeah, I kinda wish he expanded on the burrito metaphor in the video 😂
@TankorSmash
@TankorSmash 12 күн бұрын
Sorta! It's more like any monad, lists, promises, optionals and yeah IO, are able to have internal state with a preset API
@Schindlabua
@Schindlabua 12 күн бұрын
@@lamspam It's an ancient Haskell meme that there are as many monad tutorials as there are haskell programmers and then theres that ancient webcomic about how moands are just burritos. Truth is that monads aren't that complicated (you just need two functions, one that puts stuff in a burrito and another that tells you how burritos can be rewrapped into new burritos) but to actually grok it you need to learn a few fancy words and concepts. (And as a haskell enjoyer I'd be happy to talk about it)
@LorenzoGiovenali
@LorenzoGiovenali 7 күн бұрын
@@Schindlabua Please tell us about them. I didn't understand sh1t from the burrito inside your parenthesis..
@Schindlabua
@Schindlabua 6 күн бұрын
@@LorenzoGiovenali Functions take a value of some type and produce another. For a function f we can state the fact as `f :: A -> B`. Functions are cool and we all love them. Here's one that takes numbers and returns strings. const stringify = (x: number) => {/* magic */} We can then put in some number value and get a string back. stringify(4) === "4"; Love me a good function. *Audience laughs and claps* By the way don't get me started about generics. Have you ever wondered about generics? Like, `LinkedList` is a type, and `LinkedList` is a type and `LinkedList`. But *what* is `LinkedList`? *Audience laughs, then goes silent* Like it's not a type is it. It only becomes a type if we give it another type. So uhm we pass in something and get back some other thing? Like a function? *Audience gasps* idk I'm tired of this bit but yeah generics are functions on types. If we give `LinkedList` the type `Int` as an argument you get back a `LinkedList` and turning stuff into other stuff is what functions do. And that's an interesting mindset shift for programmers because for us a function is just a bunch of code that computes a value and how would you write down the `LinkedList` function as code (you can't) and when you turn `Int` into `LinkedList` you're not really computing anything either, but in fact we can do all the mathsy functiony stuff with `LinkedList` like look at it's domain (all types) and it's codomain (all types of lists) etc. As you know a favourite pastime of mathematicians is categorizing things into categories, like we can look at multiplication of real numbers and people will say hey multiplication is associative and commutative and invertible and therefor the real numbers together with multiplication form we shall call a "group". Or mayhaps we could even say that (ℝ, *) is part of the category of groups. `(ℝ, *) ∈ Obj(Grp)` I guess idk. And yeah when we look at generics like LinkedList or HashSet or Promise, we also often observe common traits so we like categorizing those too. Like, often we have a canonical way of turning a T into a Generic which is kinda interesting. Take List: `const makeList = (x: T) => [x];` Or Promise: `const makePromise = (x: T) => Promise.resolve(x);` or for c-heads, we can turn any T into a Pointer, like so: `&x`. Or something slightly more complicated: type WithEnvironment = { value: T, environment: { USE_DATABASE: string; TIMEOUT: string; } }; const makeWithEnvironment (x: T) => { value: x, environment: process.env }; Turns out many generic types can be "mapped over". That is we can for example take any regular ass function and canonically make it so it suddenly works on lists. That is, we take `fn :: a -> b` and mold it into `fn :: List -> List` using a `mapList` function. List: const mapList = fn => list => list.map(fn); // types omitted for brevity Promise: const mapPromise = fn => promise => promise.then(fn); Pointer: err... `pointer_t *map_pointer(fn, pointer) { return &func(*pointer); }` (lets not think about it too hard) WithEnvironment: mapWithEnvironment = fn => ({ value, environment }) => ({ value: fn(value), environment }); Okay and so whenever you see any generic type that has a map function like that, we call it an "Endofunctor". `(List, mapList) ∈ Obj(End)` as it were... an object in the category of endofunctors. Which is not quite monads but close. This is some preliminary things and me rambling to get you googling :) Monads are Endofunctors with some added stuff. (like our make* functions.) They're important because they're about sequencing things and doing stuff in sequence is pretty common in programming.
@some1and297
@some1and297 12 күн бұрын
Hey, it's so cool hearing people describe the process I'm currently using to write a git files parser specifically for making invoices. Honestly rusts type system helps so much in modeling how the files are layout out on disk and doing this makes the actual application side dead simple and fantastic to work with.
@njabulothwala2198
@njabulothwala2198 13 күн бұрын
The C++ stuff hit home coz I just started learning this
@ethgraham
@ethgraham 13 күн бұрын
Bjarne Stroustrup rates himself a 7/10 in terms of C++ knowledge 👍 not very promising for the rest of us
@Luiz6247
@Luiz6247 13 күн бұрын
So true. I'm learning C++ for over a year now and i still don't think I really know the language
@antonpieper
@antonpieper 13 күн бұрын
C++ 23 deducing this mentioned?
@MorningNapalm
@MorningNapalm 13 күн бұрын
My condolences.
@kippers12isOG
@kippers12isOG 13 күн бұрын
If you know Richard smith, it's really hard to be remotely close to a 10
@coderz4life
@coderz4life 13 күн бұрын
6:15 I think pandoc is probably the most prominent piece of software written in Haskell that I used frequently. Looking at the source code is quite an adventure, too.
@mattymattffs
@mattymattffs 13 күн бұрын
Rebase is great. That's what we do in our branches, but the code is merged into master/dev. Because you don't touch them directly, ever. Master exists to track releases. Dev exists for QA. It works well for us.
@sonicfind
@sonicfind 13 күн бұрын
Rebase ftw
@georgehelyar
@georgehelyar 13 күн бұрын
Rebase is great for branches that a single developer is working on before being merged, but just use a single long lived branch and use git tags to track releases.
@mattymattffs
@mattymattffs 13 күн бұрын
@@georgehelyar we use tags on master and dev. But having devs work against either of these just leads to conflicts.
@lamspam
@lamspam 12 күн бұрын
yeah, I think Prime kinda showed his colors about rebase vs merge, because it really does matter for your particular project, team, pipeline, branch, etc.
@thekwoka4707
@thekwoka4707 12 күн бұрын
No, rebase your PRs before merging them. And squash merge PRs into main.
@Axu227
@Axu227 13 күн бұрын
Haskell probably is more difficult to learn than Go, sure. But as was the case with the author of the article, it'll teach you lessons that are valuable in whichever other language you'll write.
@yayinternets
@yayinternets 13 күн бұрын
Years ago I did Scala full-time for a couple of years and the lessons from it have still stuck with me. Immutable data is the best.
@colemanroberts1102
@colemanroberts1102 12 күн бұрын
Haskell, lisp, prolog, apl, forth, smalltalk. Basically, any language that is radically different from the ones you know. C has the same effect for some coming from the declarative side.
@AlexRodriguez-gb9ez
@AlexRodriguez-gb9ez 11 күн бұрын
@@colemanroberts1102 How did Forth and Prolog change the way you write code?
@colemanroberts1102
@colemanroberts1102 11 күн бұрын
@@AlexRodriguez-gb9ez forth makes you realize how much you can get with exceedingly little, and how hard a radically simple design is to get right. Prolog's unification and backtracking change the way you see control flow, and, in turn, what kinds of problems can be solved concisely and flexibly.
@BeOnlyChaos
@BeOnlyChaos 13 күн бұрын
One day we'll get Prime to write some Haskell. He's already preparing his body and soul.
@albertoarmando6711
@albertoarmando6711 13 күн бұрын
"why the lucky stiff" mentioned. Nostalgia
@denissorn
@denissorn 13 күн бұрын
what is the best way to create a SPA or an application which would mainly or only consume/communicate with (Not JS backend) APIs? Solid, Svelte, Vue, pure JS/TS?
@tehpsalmist
@tehpsalmist 12 күн бұрын
One thing I really appreciate about Prime's content is that he is continually pointing me to blogs that I would have otherwise never found on my own. I like getting good content outside of social media. Feels like that was the original purpose of the internet.
@someguyO2W
@someguyO2W 12 күн бұрын
The Elm Architecture, or Flux architecture is an architecture that pushes a unidirectional flow of data. If you used redux, that's an example.
@tubeincompetence
@tubeincompetence 13 күн бұрын
Why did I first read the title as "I learned haskell in 15 minutes".. oh well :P
@IgorGuerrero
@IgorGuerrero 13 күн бұрын
Lol, did you believe it?
@tubeincompetence
@tubeincompetence 13 күн бұрын
@@IgorGuerrero I felt "that's impossible!". Then i got disappointed when I figured out it really is impossible 😁
@thingsiplay
@thingsiplay 13 күн бұрын
@@tubeincompetence Not impossible if you are already well versed in functional programming through other languages.
@Daniel_WR_Hart
@Daniel_WR_Hart 13 күн бұрын
@@thingsiplay But how many decades does it take to master Clojure or OCaml?
@stevenhe3462
@stevenhe3462 12 күн бұрын
I read "learn haskell in y" in 15 minutes and everything made sense to me. And then, I never used it. Lol.
@isodoubIet
@isodoubIet 13 күн бұрын
Rebase when pulling from upstream, merge --no-ff when including downstream changes
@lamspam
@lamspam 12 күн бұрын
there are so many other scenarios that it really depends on whether to use rebase or merge. I'm not exactly sure what Prime was talking about because there are common reasons why merge is better than rebase, especially when working on a large team, or an org of teams contributing to the same repo/project, etc.
@isodoubIet
@isodoubIet 12 күн бұрын
@@lamspam Like with everything you may need to break the rules on occasion, but you need some rules in place if you want any hope of understanding what's going on in a repo's history.
@pesterenan
@pesterenan 11 күн бұрын
The kid that came with a black jacket showing you his notebook: 5:04 *cool* - you say, nervously...
@foggyspinks
@foggyspinks 13 күн бұрын
We all along knew 'The Notebook' was your favourite movie and Im glad you have finally pubically admitted it.. no judgement here dude, Im glad you are are at a point in life to make that confession, peace out my dude
@lamspam
@lamspam 12 күн бұрын
He might've been joking, but don't y'all dare hate on that movie. I just re-watched it the other day, and while it may not have the same power as it did 20 years ago, I'd still say it's worth watching if anyone hasn't seen it yet
@samuraijosh1595
@samuraijosh1595 12 күн бұрын
@@lamspam its a movie for hoes
@foggyspinks
@foggyspinks 12 күн бұрын
@@lamspam I am fairly sure Prime was joking and I was 100% joking because I have never even seen a part of that film once so I have no clue what I'm talking about but based on the pure conviction in your reply, it sounds like I should give it a watch, take care, peace.
@thunder____
@thunder____ 13 күн бұрын
“This is how I plan my shorts” But I thought you simplified your wardrobe so you didn't have to plan your clothes at all. Prime plot hole!
@no.no.4680
@no.no.4680 13 күн бұрын
Plot hole so big you could stick your leg through it!
@lamspam
@lamspam 12 күн бұрын
@@no.no.4680 this could've been a kid that posted the original comment. what are you doing? at least 2 legs fit in shorts
@souravchandra
@souravchandra 13 күн бұрын
There was a open source project called Rome for caching dependencies when you are using Carthage in your Xcode Project. I wanted to fix a small bug in the codebase. I kept staring at the code for 3 months and then I gave up.
@IgnacioTaranto
@IgnacioTaranto 13 күн бұрын
Shellcheck: "Am I a joke to you?"
@TJ-hs1qm
@TJ-hs1qm 13 күн бұрын
I Learned Haskell In 15 Years was headlining Hackr news last week :D
@einargs
@einargs 12 күн бұрын
I found learning Haskell very natural. The key to understanding monads (and monad transformers) is to use them and write your own version of them. Soon they become second nature, and then you become able to puzzle out the really weird ones like the coroutine monad or CPS (which I fortunately/unfortunately haven't yet had cause to use). I also recommend doing a parser in haskell; Haskell has the best parsing libraries in the world. What I Wish I Knew About Haskell, although not currently being updated, is still an invaluable overview of many different topics and a great jumping off point.
@samuraijosh1595
@samuraijosh1595 12 күн бұрын
actually the the most attractive haskell feature to me personally is its ML language lightweight syntax. its interesting people adopt a lot of functional features into mainstream langs through their introduction to haskell....but its never the sexy syntax.
@r.t.3597
@r.t.3597 13 күн бұрын
Prime ,should i start learning to code with vim ,or vim on visual studio code,or should i just go with vs code and transition later ? (I plan to start with C)
@moustiqueneige4
@moustiqueneige4 13 күн бұрын
Use whatever suits you. If you like to understand what is going on when you compile and like the vim user interface, vim. If you don’t care, go for any IDE
@r.t.3597
@r.t.3597 13 күн бұрын
@@moustiqueneige4 Vim it is then
@Tabu11211
@Tabu11211 12 күн бұрын
A burrito is a monoid in the category of endofunctors.
@mtxn
@mtxn 13 күн бұрын
the best form of learning (in my case) is starting a new project with minimal planing and 0 language knowledge, making a "TODO" section in the README file and treat the rest like the quest in a sandbox game like factorio or satisfactory.
@gristlelollygag
@gristlelollygag 7 күн бұрын
how do you determine what kind of project with that new language?
@mtxn
@mtxn 7 күн бұрын
I just make what I think is useful. mostly cli-utils. learning a language without purpose in mind is pointless
@gristlelollygag
@gristlelollygag 7 күн бұрын
@@mtxn so usually you decide to make a specific new project, and then realize "oh this new language could do this well"? i mean i don't have a problem with learning a new language just to see "what the fuss is about" if it is being increasingly mentioned
@mtxn
@mtxn 7 күн бұрын
essentially, yes. I recently started to learning java and kotlin this way. just to make android app. I do not saying that trying a new language is a bad idea however if you do not plan to use it, take that to consideration if it's really worth your time
@Aligarde
@Aligarde 12 күн бұрын
Now I know what a burrito is! Thank you so much! (And thank you for the insights. :3)
@MikkoRantalainen
@MikkoRantalainen 13 күн бұрын
33:33 One programming language worth learning enough to fully grasp its design-by-contract feature is Eiffel. I think that language has even less real world use than Haskell but the design-by-contract feature is obviously useful in any language, even though Eiffel is the only language with full native support for it. Other languages use assert()s to emulate the missing feature.
@TapetBart
@TapetBart 13 күн бұрын
I think ATS also does the design -by-contract thing.
@MikkoRantalainen
@MikkoRantalainen 12 күн бұрын
@@TapetBart Interesting... I tried to look for some examples but ATS code seems practically unreadable for me so I didn't understand how the design-by-contract feature would work if that's indeed supported.
@jimiscott
@jimiscott 12 күн бұрын
We did Eiffel at Uni - great language.
@davidjohnston4240
@davidjohnston4240 6 күн бұрын
@@jimiscott As did I. Machester Uni, 1989-91. Prolog, ML, Eifell, Modula. Lots of interesting languages.
@ProjectVastness
@ProjectVastness 13 күн бұрын
Never used Haskell, but since I do a lot of stuff in F# , maybe I'll give a try to haskell someday
@wotwithbert7591
@wotwithbert7591 13 күн бұрын
That "someday" is crucial since the first actual step to learning Haskell is forgetting you have been wanting to learn it, ultimately resulting in forgetting you have had a thought about wanting to learn Haskell, until that thought reappears some day in a year or so
@TapetBart
@TapetBart 13 күн бұрын
I have been wanting to try Haskell because STM seems really cool.
@evergreen-
@evergreen- 12 күн бұрын
Never start learning Haskell today. Start learning it tomorrow!
@Ellefsen97
@Ellefsen97 12 күн бұрын
What’s the benefit of writing things in F# instead of writing in C#? I’m fairly proficient in C#, but I am curious about F#
@DryBones111
@DryBones111 12 күн бұрын
@@Ellefsen97 Discriminated unions, function composition syntax, and option types to name only 3 benefits.
@ktxed
@ktxed 11 күн бұрын
rebase and conflicts, sounds good alright
@kuhluhOG
@kuhluhOG 13 күн бұрын
7:35 Rebase is great until you need to bisect to find out what could have gone wrong (because the code itself doesn't really tell) and all the commits which were rebased besides the top one don't even compile anymore thanks to rebase.
@radfordmcawesome7947
@radfordmcawesome7947 13 күн бұрын
i'm team rebase, but this is a good point. there is no one-size-fits-all strat, and there is no substitution for really understanding your commit graph
@isodoubIet
@isodoubIet 13 күн бұрын
I'm also on team rebase but I've found I spend a lot of time planning how to do rebases "correctly" while keeping intermediate commits working, and it is an investment for sure.
@mskiptr
@mskiptr 11 күн бұрын
Prime, you should totally do an Elm stream once. You'll absolutely love it! (it's simple, it's elegant and it's kinda dead but not really)
@Tanmaydeshpande-nl5jy
@Tanmaydeshpande-nl5jy 12 күн бұрын
my eyes go to his shirt before his face
@samgould8567
@samgould8567 12 күн бұрын
“dictly-typed” is my new metric for programming language selection
@tommycallsuback
@tommycallsuback 13 күн бұрын
what was the white papers thing in the beginning? I didn't get it. Please someone explain
@digioi
@digioi 12 күн бұрын
Research paper. Haskell is heavily academic
@NostraDavid2
@NostraDavid2 12 күн бұрын
A "white paper" is a research paper. Do note that the cryptobros has hijacked the term white paper and are using it as "here's our advertisement", just because Bitcoin had an (actual) white paper.
@jayjeckel
@jayjeckel 12 күн бұрын
C# with readonly structs and iterators. It doesn't matter the language, immutability reduces the number of moving parts and simplifies so much. As with anything, there are limits, like gui widgets, that map better to mutablity, but more often than not, immutable is just plain better.
@ChloetteDevoulpment
@ChloetteDevoulpment 13 күн бұрын
Hey! Great vid!
@twoolivetreesarise
@twoolivetreesarise 10 күн бұрын
Notebook? Usb support? Antiglare? What about battery life? I don't get it... what if I want to transfer my files or share them? How do I stop someone from hacking my notebook? So confused.
@WHYUNODYLAN
@WHYUNODYLAN 11 күн бұрын
Prime just needs to learn Haskell already; he's read so much about it that he's probably developed a whole mythos.
@catcatcatcatcatcatcatcatcatca
@catcatcatcatcatcatcatcatcatca 13 күн бұрын
This feels very much like my experience with lisp, specifically emacs-lisp. I still haven’t written a useful program or even a package. But I can recount years of progress and shifting understanding of the language, and I have little doubt this would change. I actually have spend a good amount of time on configuring how logging tasks is handled. Maybe it is my destiny as well to write a fully fledged worktime logging system that can generate reports for invoices. This basic capability of course is already included in org-mode and all emacs releases. But it doesn’t use sqlite, instead it relies on plaintext files like all of org-mode.
@krtirtho
@krtirtho 12 күн бұрын
Your POV: It took him 15 years to learn Haskell?! My POV: He finished learning Haskell?!
@sacredgeometry
@sacredgeometry 12 күн бұрын
Mine: He started?
@minecraftermad
@minecraftermad 10 күн бұрын
32:05 i always think of a monad being a monoid in the family of endofunctors.
@jagagemo8141
@jagagemo8141 13 күн бұрын
We are literally the first team using git at my site. Other teams are doing to now (and better than us, honestly) but most of the old guard there are having to learn this new fangled tech that's like 20 years old.
@P-39_Airacobra
@P-39_Airacobra 12 күн бұрын
Optimizations are good depending on how you define optimization. If it's just a trade-off, go for the most maintainable choice. If it's a simplification, ALWAYS go for it.
@FlaviusAspra
@FlaviusAspra 13 күн бұрын
Do you use rebase within a team, or just in your own basement?
@yayinternets
@yayinternets 13 күн бұрын
In your own branch against whatever is your main branch. If you rebase multiple times a day and set things up so that git will replay your choices, merging back to main gets way easier. Especially if you are stuck in a monorepo with dozens or more engineers.
@SkitsofRandom
@SkitsofRandom 12 күн бұрын
We use rebase at my job. Every dev works on their own branch off of main, and when main is updated we all receive a notification. Then, either intermittently when you get the notification, or before you submit your merges for review, you rebase off of main, solving any potential conflicts. It's simple and means that when someone goes to review your code it is immediately ready for merge if tested & approved. It's a simple system.
@Gunzy83
@Gunzy83 13 күн бұрын
When I was an arch user btw, I used a niche unified package manager (could do repos and aur all in one) written in Haskell. It was really good but I tried to even read the code and failed. I think this is the only Haskell program I've ever used successfully. Also, having taught other engineers at work got internals, I'm with prime on rebase. Rebase is only hated if you don't understand git and know what you are doing.
@drxyd
@drxyd 12 күн бұрын
I've had to wrestle things into the Elm pattern before, it's such a nightmare having UI and application state mixed.
@Bolpat
@Bolpat 12 күн бұрын
4:00 Prime showing us his notebook and starts making jokes about those, when there’s “netbook” (NET-book) written in the article.
@robindeboer7568
@robindeboer7568 10 күн бұрын
Im pretty sure folder instead of fold R killed me instantly XD
@piq-dg3vz
@piq-dg3vz 11 күн бұрын
haskell mentioned. LFG!
@Jabberwockybird
@Jabberwockybird 11 күн бұрын
A monad is like a burrito. How is that different from a module?
@NullboyCode
@NullboyCode 13 күн бұрын
bro theprimeagen really needs obsidian or emacs org mode
@noredine
@noredine 13 күн бұрын
MONADS! How do they work?
@pauljarski7590
@pauljarski7590 13 күн бұрын
A monad is just a monoid in the category of endofunctors.
@yayinternets
@yayinternets 13 күн бұрын
MATHS
@lalakingo7
@lalakingo7 12 күн бұрын
23:42 Where Prime advises another language to improve the current one. I do alot of small automation tasks for our company which leads to python being the easiest and fastest tool for the job, however this leads to not great programming practices. I then had to do some work in golang for the ease of compiling and when I switched back to python the way I anticipated and handled errors was much more comprehensive.
@joelvermeulen6900
@joelvermeulen6900 13 күн бұрын
Wait we're ending in 'The Primeagen' again??!
@vincentmackryansalvan6929
@vincentmackryansalvan6929 12 күн бұрын
Sick Jacket bro!
@schtauffen5975
@schtauffen5975 13 күн бұрын
rebase for short lived branches. merge for long lived (or shared) branches
@litlclutch
@litlclutch 5 күн бұрын
I'm pretty sure that notebook of his, which looks like a rather nice notebook, has more functionality then a netbook...
@thekwoka4707
@thekwoka4707 12 күн бұрын
Prime: Can learn git in 13 seconds Also Prime: nobody knows how to use git
@evandrofilipe1526
@evandrofilipe1526 12 күн бұрын
I would be so mad if I wasn't constantly laughing
@petrus4
@petrus4 13 күн бұрын
I don't claim to know Haskell, but from the source code examples of it that I've seen, I think my proposed mascot for it would be Freddy Kreuger with a lab coat and glasses. "Lovably terrifying" is the phrase that comes to mind. I've watched a few videos from Haskell advocates on KZbin. They seem like genuinely kind and benevolent people, and they always sound bewildered about why everyone else is so afraid of their language.
@NiDeCo
@NiDeCo 11 күн бұрын
Yes... yes we are. It's like a self-perpetuating joke non-Haskellers tell other non-Haskellers to keep them from ever trying it. The biggest issue I've seen that cause people to abort when they DO attempt to learn it, is that they think it's "just another programming language", when you _should_ be expecting to learn programming from scratch. I've personally used Haskell in production for over 8 years... and the amount of bugs and frustration I've encountered is less than the 1 year (total) of JS and Python I've had to do on the side. I don't understand how anyone would (for a significant project or product) choose "this is so easy to write (and HORRRRRIBLE to debug and refactor)" over "this takes some effort to write (but it's mostly bugless and refactoring is a breeze)"
@notapplicable7292
@notapplicable7292 13 күн бұрын
When Haskell chads talk about pure fuctions I start wondering if I am infact a functional bro just waiting to be born.
@ahmedkhaled7960
@ahmedkhaled7960 13 күн бұрын
shellcheck is written in Haskell btw
@BeneSim
@BeneSim 13 күн бұрын
Funny, instantly thought about the same when it was mentioned in the video ;) This has been burned into my brain because I needed to compile GHC for armv7l since some nix derivations used writeShellApplication from nixpkgs which uses shellcheck as a linter ... I believe GHC was the longest compile ever for me with Linux, gcc, llvm and the other usual suspects not even getting close to it ...
@samtheman1868
@samtheman1868 13 күн бұрын
Really?
@RegrinderAlert
@RegrinderAlert 12 күн бұрын
Pandoc as well
@NostraDavid2
@NostraDavid2 12 күн бұрын
As is hadolint (Haskell Dockerfile linter)
@NickCombs
@NickCombs 11 күн бұрын
That's a beautiful notebook sweetie
@Heater-v1.0.0
@Heater-v1.0.0 12 күн бұрын
It took about twenty years from me seeing the source code of a Fast Fourier Transform, in BASIC in some computer magazine, to actually understanding how it worked well enough to write my own FFT from scratch. Imagine if I had wanted to write my FFT in Haskell. Complexity multiplies on complexity so it might take me 300 years to do it! I guess that means of have an IQ of about 7. But what can I do.
@bhavyakukkar
@bhavyakukkar 11 күн бұрын
1:02 small world, today Leah is a Void Linux developer
@blarghblargh
@blarghblargh 12 күн бұрын
world record achieved
@burkskurk82
@burkskurk82 13 күн бұрын
Ohh.. So Git is Prime’s achilles..?
@user-uh4nh3yl2s
@user-uh4nh3yl2s 12 күн бұрын
prime's getting jacked
@VitisCZ
@VitisCZ 12 күн бұрын
I think the reason why after rewriting falcor you ended up with pretty much the same code is because you solved the exact same issue the exact same way as the person before you
@andrewdunbar828
@andrewdunbar828 5 күн бұрын
What kind of wonder is a wonder kind?
@cmelgarejo
@cmelgarejo 13 күн бұрын
Chat never deployed anything to prod, thats why they dont use rebase
@tonydejesus3774
@tonydejesus3774 13 күн бұрын
Work on primarily infra, roll forward is kinda the ONLY option we get =P
@yayinternets
@yayinternets 13 күн бұрын
Mostly on databases, but you can still make it work there if needed with a lot of work. If you use something like Terraform and treat infra as code/state machine, life is much better.
@ilyavasylevsky3229
@ilyavasylevsky3229 13 күн бұрын
Yeap, confirm, exact same with tutorials, I start and after few steps just roing on my own not following tutorial...
@eliasmai6170
@eliasmai6170 13 күн бұрын
i know of two people who uses Haskell on their day to day job.
@Octogenico
@Octogenico 13 күн бұрын
They're skin walkers
@SaiyaDev
@SaiyaDev 13 күн бұрын
Free 🇵🇸🇵🇸
@adjbutler
@adjbutler 12 күн бұрын
only 15 years??? wow!!! this guy is a genius! no cap!
@WayOfTheCode
@WayOfTheCode 13 күн бұрын
India has a worker coop ride hailing app written in haskell backend and purescript frontend.
@knowledgedrinker7002
@knowledgedrinker7002 13 күн бұрын
Juspay is in Haskell btw, Hasura too
@samuraijosh1595
@samuraijosh1595 12 күн бұрын
what did i just read...can you explan futher?
@WayOfTheCode
@WayOfTheCode 11 күн бұрын
@@samuraijosh1595 india has few multi million user real time applications in Haskell. Search for NammaYatri (ride hailing app launched to protect against Uber Lyft Ola like capitalists). NammaYatri works on ONDC framework of GovOfIndia. There is a globally known GQL toolkit-> Hasura also written in Haskell. There are many smaller (early in utilisation not small in code base) libraries that are part of the tech ecosystem here for some reason especially in web3.
@WayOfTheCode
@WayOfTheCode 11 күн бұрын
@@knowledgedrinker7002 I knew of Hasura but not Juspay but make sense since JusPay is what Monetises NammaYatri.
@fjodorstjulkins5179
@fjodorstjulkins5179 12 күн бұрын
"Learn Haskell in 15 years!" sounds like a great Udemy course!
@AndrewSayman
@AndrewSayman 13 күн бұрын
`git rebase -i` is a core part of my workflow. Gotta squash all of those commits that are just "FUCK WHY DOESN'T THIS WORK"
@diamondtulip6186
@diamondtulip6186 13 күн бұрын
I have never ever used git rebase, merge was always enough. If I want to return to previous commit I just manually copy over newest `.git` subfolder to previous version thus making negative diff not loosing any previous commit.
@Zweimt
@Zweimt 12 күн бұрын
If you have backward compatible migrations, all you need is copies of the previous code, with merging vs rebase. If you have docker containers of previous builds, it is not necessary to revert the main repository, imo I think commit history > less commit history
@valentin-catalin1859
@valentin-catalin1859 13 күн бұрын
Nice jacket.
@Tanmaydeshpande-nl5jy
@Tanmaydeshpande-nl5jy 12 күн бұрын
primes t shirt is uncanny
@andrewdunbar828
@andrewdunbar828 12 күн бұрын
My favourite movie is "The Netbook".
@Antagon666
@Antagon666 13 күн бұрын
Compared to prolog, Haskell is the most intuitive programming language on the planet
@davidjohnston4240
@davidjohnston4240 6 күн бұрын
That must be why I hate Haskell. I find Prolog straight forward.
@flipperiflop
@flipperiflop 13 күн бұрын
How is git rebase used exactly?
@yayinternets
@yayinternets 13 күн бұрын
In your own branch against whatever your main branch is. Essentially you want git setup to remember your rebase choices. Then you rebase against main multiple times a day and before merging back into main. It lets you be able to keep up with everything going on with main, especially if you are stuck in some long lived branch... and makes merging your changes back in, very easy.
@isodoubIet
@isodoubIet 13 күн бұрын
Say you created a branch where you're coding some feature. Then someone else merged some additional features into master. What do you do? Option 1 is to merge master into your branch. This works, but the commit graph can get very complicated as merges happen in both directions. Option 2 is to rebase your branch on master. This effectively deletes your old branch and creates a new one (with the same name) starting from the new state of master, created by replaying all your feature commits on master. Now the commit graph is much cleaner. There's details and subtlety here about how to do this stuff in practice and how it can go wrong, but that's the gist. The main advantage of rebase is that it makes understanding the git history actually possible, where merging leaves an inscrutable mess.
@arcadus
@arcadus 13 күн бұрын
notebooks are great and it saddens me that people dont really use them anymore
@kmr_tl4509
@kmr_tl4509 13 күн бұрын
32:00 Sorry, what's a burrito?
@johnathanrhoades7751
@johnathanrhoades7751 13 күн бұрын
It’s a wrap in the category of Mexican food.
@the.real.ipatch
@the.real.ipatch 13 күн бұрын
your shirt would be more comfortable if it were dtg printed instead of the vinyl transfer 😩
@TheFreddieFoo
@TheFreddieFoo 12 күн бұрын
is this guy like Bill Burr for computer nerds?
@Bolpat
@Bolpat 12 күн бұрын
1:00 It’s always fascinating how many “educated” Americans utterly lack foreign language skills. In Germany, a high-school degree requires you lean 2 foreign languages, usually one is English and the other is among French, Spanish, and Latin. I learned English, Latin, Spanish, and Italian, and apart from English, my skills in them aren’t that good, but good enough to skim a random Wikipedia article and tell you what it is about and to judge if a translation you present me is probably genuine or nonsense.
@dmitrysim
@dmitrysim 13 күн бұрын
4:04 is this guy ritche intro or smth?
@Omnifarious0
@Omnifarious0 12 күн бұрын
Rebase does make sometimes. For example, using it when you `git pull` and someone has changed the branch you're on, it might well make sense, depending. But, in general, I absolutely despise it. It destroys history. And reverting is easy enough. You commit the revert change right on top of the change it's reverting, then you merge that into the branch you want reverted. Of course, I really hate git as well, and I use Mercurial to interact with almost all repositories.
@notapplicable7292
@notapplicable7292 13 күн бұрын
Prime seems like a fun guy to have done LSD with
I Spent 18 Months Using Rust And Regret It
38:36
ThePrimeTime
Рет қаралды 161 М.
[UPDATE] Mojo Is Faster Than Rust - Mojo Explains More
52:09
ThePrimeTime
Рет қаралды 242 М.
Vivaan  Tanya once again pranked Papa 🤣😇🤣
00:10
seema lamba
Рет қаралды 31 МЛН
My little bro is funny😁  @artur-boy
00:18
Andrey Grechka
Рет қаралды 13 МЛН
Получилось у Вики?😂 #хабибка
00:14
ХАБИБ
Рет қаралды 7 МЛН
Жайдарман | Туған күн 2024 | Алматы
2:22:55
Jaidarman OFFICIAL / JCI
Рет қаралды 1,6 МЛН
I Tried Defending EVERY Cursed JS Behavior
46:04
Theo - t3․gg
Рет қаралды 55 М.
Don't Model the Problem
14:32
David Hart
Рет қаралды 13 М.
Code Review: Dart
12:37
TheVimeagen
Рет қаралды 23 М.
PHP Doesn't Suck Anymore? | Prime Reacts
25:42
ThePrimeTime
Рет қаралды 302 М.
Haskell in 100 Seconds
2:30
Fireship
Рет қаралды 839 М.
Should You Still Learn To Code? | Prime Reacts
1:00:21
ThePrimeTime
Рет қаралды 239 М.
This Might Be The Best Advice I Have Ever Seen
40:02
ThePrimeTime
Рет қаралды 243 М.
They got away with this??
1:21:04
ThePrimeTime
Рет қаралды 1,2 МЛН
Go Iterators Are Bad
36:12
ThePrimeTime
Рет қаралды 81 М.
ОБСЛУЖИЛИ САМЫЙ ГРЯЗНЫЙ ПК
1:00
VA-PC
Рет қаралды 472 М.