tried it all ready, it's not all that different LOL. Turns out if you're a terrible dev, you're still a terrible dev but just with a different language!
@@TehKarmalizer Honestly, I don't think he has the time or dedication for a language like Haskell. It's not one of those languages you can learn in a week. So I don't blame him. I don't believe Ocaml is a strict enough language for the paradigm shift he needs to become a functional programming fanatic or purist.
me, before learning haskell: "pshh, nerds, its not a viable language, you just like it because its different" me, after learning haskell: "learn haskell" will take you a lot of time though. its so different from what you're used to, that it is almost like learning to code all over again. and the experience of learning it replicates all of the joy. it also provides you with a toolbox of useful abstract ways to think about code that even most other FP languages fail to do. that's because there's usually a cheap way around learning something difficult about pure FP in other FP languages. in haskell, there's no alternative. i think we all want to be programmers where we're supposed to write good code, not quick code. if that's the case, give it a whirl, i'd say.
@@Egzvorg the more interesting question would be, is it less bad than the commercial online course management systems (presumably written in Java) that other universities use!
An actually better way of stating it is that it's like a box you can throw functions into, and then peek into the box to see what's there. Java has them in the standard library, so it's not like they're anything special anymore...
@@HrHaakonthat sounds more like a functor. A monad is that plus a way to compose functions that work "inside" the box but return boxed values. The box can be anything, encapsulating a computational context that you then use with monads to compose these computations that work inside those contexts. With monads, you can do that even though you don't really know how this "computational context" works inside. It might sounds very handwavy but usually seeing examples helps a lot there. The key point is that monads allow the *composition* of "actions" (functions) that work on the contents of those boxes but themselves produce new boxed values. Is that the peeking?
@@Tomyb15 That's kinda what I meant by "throwing functions into it". The peeking is the act of getting the value back out, the term for which I have forgotten, but is one of the criterion for a monad being a monad.
@@HrHaakon oh ok. I'm not sure which criterion that is as you don't have any function in the monadic interface to get a value from a container (though you do have the inverse, putting a value in a container). But I guess details get lost when simplifying an explanation.
2 years of Haskell in production (together with Elm); the learning curve is painful but the payback is unreal. Best way to write bug free code at high speed, and with a bit of practice to have runtime that perform on execution speed & memory footprint near what you get out of C++ (minus the runtime errors).
Is elm still kicking on? I was taking a look at it last week to see if it would be a good fit for a small personal project. Seemed like it would be fun to learn but it looks like it's not being updated anymore.
@@chrisburke1672I'm learning Elm and it's fantastic. Have a look at the Roc programming language as well, which is an Elm descendant that complies to machine code (it's still in development).
@@chrisburke1672 elm is definitely worth trying, it's a great language to work with. The compiler hasn't been updated in 4 yrs and yet it's still very current, and the community is high quality/low noise so even if less packages show up on the repos the one that ones need are usually there, and they are well done/bug free.
I still don't know what Haskell actually is. All I know is that after setting up LaTeX on my computer, I regularly get gigabytes of Haskell related updates per month whenever I pacman -Syu
We'll have him soon. OCaml is just the codeine laced cigarette, the gateway drug- pretty soon he's going to find himself in a public bathroom stall mainlining pure unfiltered Haskell wondering how things got this far but knowing there's no going back
@@tonyb3123 ayo which ones do you think its better, haskell or ocaml? i want to try haskell first for several reasons, but i also want to read different opinions
@@ds_7 ghc will never accept a program that won't type check. At worst it will give up trying to type check if it goes on for too long if it gets stuck with an undecidable instance of a type. But even then, you don't have to use type families or those other very fancy features if you don't want to. They are very useful when you know when and where to use them however.
It seems to me like Haskell has a lot of the same features that you love in Ocaml but with a cleaner syntax and extra purity. I know it's a bit of a meme at this point but surely you'd like it. All the 'mathy' words sound stupid but they're just abstractions for common patterns that you also find in other languages. Like in Rust you have the `?` operator which allows you to work with the inner values based on context. Those types are basically monads. Wouldn't it be cool if you could write custom types that can utilize the `?` operator in a similar way, do some computation based on context?
I disagree. In Haskell you are forced to use IO for effects, which means you have to learn a second language basically. But it's even worse then that because Haskell also pushes Maybe and other error handling monads, which means that a beginner might actually need to work with transformers, unintentionally. Which is significantly more challenging then the other parts of the language. Also type classes, they make everything really polymorphic. Personally, I like that, but it does make things more difficult to learn for someone whose not familiar with the type system.
@@PhthaloJohnson I don't get what you disagreed with. But sure, learning everything at once is a big hurdle. Haskell's kind of unusable when you don't understand IO and do notation, I wouldn't call it a separate language though. There's a lot to learn, but once it all clicks into place, you're left with a clean and elegant language with nice abstractions.
@@PhthaloJohnson Two points: #1, you can stuff everything into IO, which is possible, but considered smelly (you're giving up Haskell's pure-impure separation, alongside a ton of optimization by the compiler). #2, you can do all your IO outside of do notation with manual *> / >> and >>= into lambdas.
I was once paid to write web Haskell (called Elm) in College. Most beautiful error messages ever, ran bug free once it compiled. Then the XML parser library produced a stack overflow for reasonably sized XML because it was written maximally recursive. Working around that soured the experience somewhat xD
afaik elm has tail recursion meaning recursive functions do not result in stack overflows. maybe it was the libraries fault not the language. also elm is not "web haskell" that would be more like purescript but even that isn't haskell. "web haskell" is haskell compiled for webassembly.
My Haskell course back at college prevented me to see that "Monads" actually _are_ a useful design pattern. Needed me a long time to look beyond that functor/category theory stuff that drove me away.
That Haskell userbase is way higher than that! We had a mandatory (well at the master level) course, where learning haskell and some of the fun stuff in it was part of it. I still find it to be the premier language to write quick and dirty interpreters in, as the use of a state monad as output makes it "super easy", at least once you have wrapped your head around it. If you ever want to learn Haskell, my suggestion is to try and write a small simple interpreter in it. Other than that, I would hazard a guess that one could say that Haskell already has a monadic composition-functor wrapper, which I interpret as the ability to make custom binary operators that are curriable, which is quite neat thing.
I knew an Aussie PhD who worked on the old Google Wave project who was also super down with Haskell. I never understood why though, but maybe it was because he was more an academic than I was since he became a professor after that and I chose to just stay at bachelor's level with comp sci.
Same. I'm a weirdo, working in games (tech art), in python, but loving Haskell, and wishing for ten years now that I could use it in my work. It was very common for me to have an idea for some tool, write a big part of it in Haskell, just for fun, and to think through the idea, then try to translate it back to python, and cry when I couldn't, because python just couldn't keep up with all the coolness.
Pretty sure that person's first name is not Dutch. "Van der Linde" is very clearly a last name from the Netherlands and someone from the Netherlands is a Dutch person. Might be a nickname?
Poor haskell. Anyone else remember when you thought Prime was the same channel as theo? ...autoplay confused the sh-t out of me for a while. I got better after reading the documentation provided by this guy named Tom. Dude is a genius.
Tried Haskell once, dude it was not fun, the language is so hard to read/write? The learning curve is....I mean it's not even a curve, it's a flat vertical line lmao
It me, and I'm the only one. I work in games (tech art), and for 10+ years now, across half a dozen companies, I've been loving, and trying to get anyone in my industry to look into it, with zero success. Absolutely no one gives a crap. It's radically changed how I write my tools and libs, for the better, and no one cares. I went for several years to a Haskell meetup in my area, and each person had the same story. It was pretty funny. Everyone said the same thing: "I'm the only one at my company who cares about this! It's so nice to find this group, and not feel like a crazy person finally." 😆
3:40 That is really fucked up. Thankfully, I have never seen that happen, although I have heard it in other places. Usually what happens is that the students do simulations, for example, for their own papers, and the professor requests if they can use those for other purposes, usually orthogonal to the student's intentions. The student is studying X and the professor wants to study Y, which has little to do with X. In reality, if done well, it is symbiotic relationship, because the professor doesn't have time to run the simulations but has the knowledge to extract meaning out of them, while the students have the time, lack the knowledge, and they get not only a first author in their own paper, but a coauthor in another paper. And the reality is that teaching a bunch of PhDs is a massive time sink. Having master students is even more of a sink of time. And then you are evaluated at your job besides all of that, so you basically are giving up 60% of your day, but in that other 40% you have to produce as if you were working 100%. So being able to use the students as powder monkeys is not only a way to make your work easier, but a way to make your work possible. The alternative is to reduce drastically the amount of students that you have. The problem is when the only paper produced is 90% work of the students and they are not credited as first authors. Then there is the issue of authors and coauthors names order. In some fields, they are ordered by importance of the contribution. In other fields, they are alphabetically ordered. In some fields you only author people with a direct impact, while in other fields you author every single person that had something to do with the paper. In my field, we only cite by name people who have had a direct and sizable contribution to the paper, and usually in order by importance of such contribution, and then each machine has a XXXXX Team reference, usually a white paper, with the name of all the people involved in the design and running of the machine, and then we just add "and the XXXX team [1]" to the end of the author list. However, in Astrophysics and particle physics, you have literally 4-5 pages of authors in alphabetical order.
@@deidyomega While it's great, that's not the same thing. If you just do that there's always going to be the "side effect by accident" factor, especially when working with other people or libraries. A language with a distinction between pure and impure functions can give you guarantees.
@@terryriley6410 assuming your evil friend didn't sprinkle the forbidden runes: ```unsafePerformIO```(a.k.a.. let's pretend IO x.... a impure action returning "x" is actually a just pure "x") in the code. Maybe the last one who messed the production with that was made an example of.
My graduate advisor puts his name at the end of the author list unless he actually deserves first author. That usually only happens when he is collaborating with peers. If the grad student or undergrad did most of the work, he takes second or third author and the student(s) take first and second author. Academics are coming around to put students first on papers when they do the work.
My favorite terrible metaphor involved a series of snails eating other snails. Like... what? It's literally just "how to do this thing, then that thing" - that's it. Jesus.
His "Execution in the Kingdom of Nouns" (steve-yegge.blogspot.com/2006/03/execution-in-kingdom-of-nouns.html) is an absolute classic. Every OOP programmer should read it.
@ThePrimeTime @ThePrimeagen ... you are doing awesome job man. Keep it up and why not bring in some deep research papers and make them easy for us mortals to understand. :).
I give a shit about Haskell! But also don’t use it. I tried multiple times, but haven’t yet even been able to install the tooling. And I’m like, I could sit down and troubleshoot and work through it… But oh yeah I have stuff to do that actually matters. And if I can’t even just install it without having problems, that doesn’t seem to bode well for this language I’ll never get paid to use.
@@Egzvorg in small areas but there almost exclusively. We focus on process automation and part of that is processing and analyzing a constant stream of incoming values. The processing and some basic analysis is done using Haskell as it's fast and the direct correlation between input and output of functional programming lends itself to such applications
Hasura a billion dollar indian Open source foundation that maintain GraphQl library of same nane, and cordana a mutli billion dollar crypto project are both entirely written in Haskell.
I just don't know what monads are. So far I think they are something like... a value that's inside somesh*t I mean something that has some kind of interface that allows me to make operations based on that "inner" value, without changing it.
It's a typeclass in Haskell, think interface, that's supposed to resemble category theory monads. In practice, it just means when you have a parameterized type Type and you have it as Type, you can merge the layers together back into Type, plus support for mapping, support for injection, and observance of a bunch of contracts. The big problem is that it's so abstract, say, over the type List, it just means flatten / map, on the type IO, it means "sequence the IO actions together / do an IO action that depends on the result of the previous IO action", on Optional, it means "propagate the null upwards, or do something with the non-null result", etc...
concatMappable containers, mappable Containers = Functors, concatable things = Monoid. The concatMap or >>= function of haskell is the chainable version of $, and is sort of a programmable semicolon. Also JavaScript's promises are Monads, they are used to give JS Async semantics in a imperative language, but Monads can be used to escape the embed the semantics of one language into another and some of those semantics like the List monad are not normally what you think about as languages.
@@aoeu256 The containers are a false analogy; i.e, is "Proxy a" a container? The datatype Proxy a can be lawfully instanced into the typeclass Monad, but the only possible value of Proxy a is Proxy-i.e, it contains nothing.
I think your Rust quote is backwards. It should read: Emotionally trivial. Conceptually difficult. So it prevents memory errors without me having to do anything? Yeah! Let me get this straight. You need to ask the loan manager.... What's that? Borrow Checker? What type of name is that?.... to see if.................................................................................................................................................... really? Is this necessary? It's idiomatic?.........................................................Didn't you just move the problem to a different scope?...........................................................................Why does the compiler keep yelling at me?!!!........................................................................I'm going to invent my own/learn Zig.
@@SimonBuchanNz If I knew that, I wouldn't have to borrow from a loan shark, I would go to a bank. If I knew how it would return, I wouldn't need the checker, I would just do it.
@@NdxtremePro then every other language is right there to let you dangle your references or hit squirrelly reentrency bugs! But honestly, Rust is way easier once you realize that if you're getting borrow checker errors, you can just not borrow.
lmao, imagine wasting your time in Monads, something "created" by a guy that never pushed 1 line of code into a real high avail system...hahahaha pathetic
JavaScript promises are monads with then being the famous haskell >>= also called flatMap. Why not generalize the notion of JavaScript promises to be able to embed any programming language or semantic into another one.
The worldwide Haskell community met over beers. omg. I just watched Hitler reacts to FP and this came up next. Primeaperfection. I'm trying to comprehend Haskell so I can follow Erik Meijer's 1996 "Monadic Parser Combinators" paper. I'm halfway through the paper and they introduced a new notation because "it's easier to read" and now I'm totally lost. The code samples are actually in some obscure FP language called Gofer, but CoPilot thinks it's Haskell. Fun.
One day I will use Haskell, neovim and Arch Linux all at the same time. This will make me become the next step in human evolution.
Have you tried nixos? XD
You might overdose pal.Take one at a time to build resistance.
Someday, my friend. Someday.
tried it all ready, it's not all that different LOL. Turns out if you're a terrible dev, you're still a terrible dev but just with a different language!
@@Anhar001 you can't be terrible with haskell if you make something work, it works.
Prime is going to become a die-hard Haskell fanboy someday. I'll be there for it. 😂
Maybe like he was for OCaml. For all of 5 minutes.
@@TehKarmalizer Honestly, I don't think he has the time or dedication for a language like Haskell. It's not one of those languages you can learn in a week. So I don't blame him. I don't believe Ocaml is a strict enough language for the paradigm shift he needs to become a functional programming fanatic or purist.
@@LateefAlabiOki "I don't believe Ocaml is a lazy enough language" :D
rewrite rust in haskell
me, before learning haskell: "pshh, nerds, its not a viable language, you just like it because its different"
me, after learning haskell: "learn haskell"
will take you a lot of time though. its so different from what you're used to, that it is almost like learning to code all over again. and the experience of learning it replicates all of the joy. it also provides you with a toolbox of useful abstract ways to think about code that even most other FP languages fail to do. that's because there's usually a cheap way around learning something difficult about pure FP in other FP languages. in haskell, there's no alternative. i think we all want to be programmers where we're supposed to write good code, not quick code. if that's the case, give it a whirl, i'd say.
Ah... Back when Haskell community was pleasant and had sense of humour.
Discovering industry probably had something to do with the loss of their sense of humour 😄
5 ppl is the community today? Is that it? I mean....
@@gbb1983 yes, and keep in mind it has doubled in the last 10 years.
when was that?
@@TehKarmalizerdid they manage to have kids?
My university's in-production online course management and enrolment system, exclusively for the IT faculty, is written entirely in Haskell.
Is it good?
@@Egzvorg there's a link to the git source at the bottom ("Quellcode")
Ok clearly I can't post links. Search for "uni2work". It's the IT faculty at the University of Munich. Publicly accessible.
@@Egzvorg If it's anything like any other software written by people in universities, no it's not.
@@Egzvorg the more interesting question would be, is it less bad than the commercial online course management systems (presumably written in Java) that other universities use!
If you're confused about monads, let me explain:
Monads are Monoids in the category of endofunctors.
It's really as simple as that.
An actually better way of stating it is that it's like a box you can throw functions into, and then peek into the box to see what's there.
Java has them in the standard library, so it's not like they're anything special anymore...
@@HrHaakonthat sounds more like a functor. A monad is that plus a way to compose functions that work "inside" the box but return boxed values.
The box can be anything, encapsulating a computational context that you then use with monads to compose these computations that work inside those contexts. With monads, you can do that even though you don't really know how this "computational context" works inside.
It might sounds very handwavy but usually seeing examples helps a lot there. The key point is that monads allow the *composition* of "actions" (functions) that work on the contents of those boxes but themselves produce new boxed values. Is that the peeking?
@@Tomyb15
That's kinda what I meant by "throwing functions into it". The peeking is the act of getting the value back out, the term for which I have forgotten, but is one of the criterion for a monad being a monad.
@@HrHaakon oh ok. I'm not sure which criterion that is as you don't have any function in the monadic interface to get a value from a container (though you do have the inverse, putting a value in a container). But I guess details get lost when simplifying an explanation.
@@HrHaakon It's hilariously apt and ironic that you just perfectly expemplified that you dont actually know what a monad is.
2 years of Haskell in production (together with Elm); the learning curve is painful but the payback is unreal. Best way to write bug free code at high speed, and with a bit of practice to have runtime that perform on execution speed & memory footprint near what you get out of C++ (minus the runtime errors).
Found the extra person who gives a shit about Haskell
Is elm still kicking on? I was taking a look at it last week to see if it would be a good fit for a small personal project. Seemed like it would be fun to learn but it looks like it's not being updated anymore.
@@chrisburke1672 maybe it's just done? I mean finished :)
@@chrisburke1672I'm learning Elm and it's fantastic. Have a look at the Roc programming language as well, which is an Elm descendant that complies to machine code (it's still in development).
@@chrisburke1672 elm is definitely worth trying, it's a great language to work with. The compiler hasn't been updated in 4 yrs and yet it's still very current, and the community is high quality/low noise so even if less packages show up on the repos the one that ones need are usually there, and they are well done/bug free.
I still don't know what Haskell actually is. All I know is that after setting up LaTeX on my computer, I regularly get gigabytes of Haskell related updates per month whenever I pacman -Syu
Probably pandoc that's causing this.
Maybe you installed pandoc?
Haskell packages on Arch are rather strange indeed
I saw Haskell in the title and hoped that you were finally going to try it, but the article was funny enough to compensate for my disappointment ☺️
We'll have him soon. OCaml is just the codeine laced cigarette, the gateway drug- pretty soon he's going to find himself in a public bathroom stall mainlining pure unfiltered Haskell wondering how things got this far but knowing there's no going back
@@tonyb3123😂😂 you people are crazy
@@tonyb3123 ayo which ones do you think its better, haskell or ocaml? i want to try haskell first for several reasons, but i also want to read different opinions
The FP boys will end win in the end
My favorite part of the video is when he said it's Haskellin' time and then he Haskelled all over the place
This joke hasnt died yet? Congrats on being "super original"
@@cholst1 good ones never die.
@@_curtmanIt just gets beat into the ground by unfunny people copying it I guess
@@cholst1it’s not a joke. It’s culture.
@@deniyii more like the death of culture
i tried haskell once
it gave me the urge to code in untyped lambda calculus
I tried haskell once
and hoped all Monads are just the same so that I can mix all kinds of side effects together and boost productivity by 39x
So, clojure? Lisp? John Backus' FP?
If you actuslly do that, you'll be begging to be using haskell instead.
Haskell’s type system is Turing complete. Untyped degeneracy isn’t permitted.
@@ds_7 ghc will never accept a program that won't type check. At worst it will give up trying to type check if it goes on for too long if it gets stuck with an undecidable instance of a type.
But even then, you don't have to use type families or those other very fancy features if you don't want to. They are very useful when you know when and where to use them however.
@@austinsiu2351Transformers!
It seems to me like Haskell has a lot of the same features that you love in Ocaml but with a cleaner syntax and extra purity. I know it's a bit of a meme at this point but surely you'd like it. All the 'mathy' words sound stupid but they're just abstractions for common patterns that you also find in other languages. Like in Rust you have the `?` operator which allows you to work with the inner values based on context. Those types are basically monads. Wouldn't it be cool if you could write custom types that can utilize the `?` operator in a similar way, do some computation based on context?
I disagree. In Haskell you are forced to use IO for effects, which means you have to learn a second language basically. But it's even worse then that because Haskell also pushes Maybe and other error handling monads, which means that a beginner might actually need to work with transformers, unintentionally. Which is significantly more challenging then the other parts of the language. Also type classes, they make everything really polymorphic. Personally, I like that, but it does make things more difficult to learn for someone whose not familiar with the type system.
@@PhthaloJohnson I don't get what you disagreed with. But sure, learning everything at once is a big hurdle. Haskell's kind of unusable when you don't understand IO and do notation, I wouldn't call it a separate language though. There's a lot to learn, but once it all clicks into place, you're left with a clean and elegant language with nice abstractions.
@@PhthaloJohnson
Two points:
#1, you can stuff everything into IO, which is possible, but considered smelly (you're giving up Haskell's pure-impure separation, alongside a ton of optimization by the compiler).
#2, you can do all your IO outside of do notation with manual *> / >> and >>= into lambdas.
Haskell researchers have a plan. You've just gotta have faith.
Just pray to the omnimonad 🙏
We need money
I was once paid to write web Haskell (called Elm) in College. Most beautiful error messages ever, ran bug free once it compiled. Then the XML parser library produced a stack overflow for reasonably sized XML because it was written maximally recursive. Working around that soured the experience somewhat xD
Elm's syntax is based on Haskell, but apart from that, I would say they have very little in common.
Elm is not Haskell.
@@fennecbesixdouze1794 as he said, it's web-haskell
afaik elm has tail recursion meaning recursive functions do not result in stack overflows. maybe it was the libraries fault not the language. also elm is not "web haskell" that would be more like purescript but even that isn't haskell. "web haskell" is haskell compiled for webassembly.
“I was once paid to write web C++ (C#)” - not far off the equivalent of what you just said.
all the names are red dead characters lmfao
I was waiting for him to pick up on the reference...
My Haskell course back at college prevented me to see that "Monads" actually _are_ a useful design pattern. Needed me a long time to look beyond that functor/category theory stuff that drove me away.
That Haskell userbase is way higher than that! We had a mandatory (well at the master level) course, where learning haskell and some of the fun stuff in it was part of it. I still find it to be the premier language to write quick and dirty interpreters in, as the use of a state monad as output makes it "super easy", at least once you have wrapped your head around it. If you ever want to learn Haskell, my suggestion is to try and write a small simple interpreter in it.
Other than that, I would hazard a guess that one could say that Haskell already has a monadic composition-functor wrapper, which I interpret as the ability to make custom binary operators that are curriable, which is quite neat thing.
You will code in haskell one day, and you will love it.
I knew an Aussie PhD who worked on the old Google Wave project who was also super down with Haskell. I never understood why though, but maybe it was because he was more an academic than I was since he became a professor after that and I chose to just stay at bachelor's level with comp sci.
Ahahahaha. I adore Haskell, I have never had more fun programming than when using it. Also, this is hilarious.
True. I sadly work mostly with C in my day job but Haskell is my go-to for fun. Scheme too.
Same. I'm a weirdo, working in games (tech art), in python, but loving Haskell, and wishing for ten years now that I could use it in my work. It was very common for me to have an idea for some tool, write a big part of it in Haskell, just for fun, and to think through the idea, then try to translate it back to python, and cry when I couldn't, because python just couldn't keep up with all the coolness.
This was actuallya great read lol
it was hilarious and well written
Chad primeagen talking to his chad users :)
As a person that follows rust and c# releases and uses neither I feel attacked
isnt facebooks spam filtering done entirely in haskel?
yeah, but that's not funny
@@antronixfulohhh oh ok
i mean who the fuck is hascoll lmao amirite lawl
Pretty sure that person's first name is not Dutch. "Van der Linde" is very clearly a last name from the Netherlands and someone from the Netherlands is a Dutch person. Might be a nickname?
Red dead redemption character?
The number if times "I have thought, Hey, I should learn Haskell", then realized I need to eat...
Poor haskell. Anyone else remember when you thought Prime was the same channel as theo?
...autoplay confused the sh-t out of me for a while. I got better after reading the documentation provided by this guy named Tom.
Dude is a genius.
Tried Haskell once, dude it was not fun, the language is so hard to read/write? The learning curve is....I mean it's not even a curve, it's a flat vertical line lmao
It me, and I'm the only one. I work in games (tech art), and for 10+ years now, across half a dozen companies, I've been loving, and trying to get anyone in my industry to look into it, with zero success. Absolutely no one gives a crap. It's radically changed how I write my tools and libs, for the better, and no one cares. I went for several years to a Haskell meetup in my area, and each person had the same story. It was pretty funny. Everyone said the same thing: "I'm the only one at my company who cares about this! It's so nice to find this group, and not feel like a crazy person finally." 😆
I want a remote Clojure or Haskell job O_o... Maybe hacking chatGPT to make personal assistants
We use Haskell too, it’s dang awesome.
3:40 That is really fucked up. Thankfully, I have never seen that happen, although I have heard it in other places.
Usually what happens is that the students do simulations, for example, for their own papers, and the professor requests if they can use those for other purposes, usually orthogonal to the student's intentions. The student is studying X and the professor wants to study Y, which has little to do with X.
In reality, if done well, it is symbiotic relationship, because the professor doesn't have time to run the simulations but has the knowledge to extract meaning out of them, while the students have the time, lack the knowledge, and they get not only a first author in their own paper, but a coauthor in another paper.
And the reality is that teaching a bunch of PhDs is a massive time sink. Having master students is even more of a sink of time. And then you are evaluated at your job besides all of that, so you basically are giving up 60% of your day, but in that other 40% you have to produce as if you were working 100%. So being able to use the students as powder monkeys is not only a way to make your work easier, but a way to make your work possible. The alternative is to reduce drastically the amount of students that you have.
The problem is when the only paper produced is 90% work of the students and they are not credited as first authors.
Then there is the issue of authors and coauthors names order. In some fields, they are ordered by importance of the contribution. In other fields, they are alphabetically ordered. In some fields you only author people with a direct impact, while in other fields you author every single person that had something to do with the paper.
In my field, we only cite by name people who have had a direct and sizable contribution to the paper, and usually in order by importance of such contribution, and then each machine has a XXXXX Team reference, usually a white paper, with the name of all the people involved in the design and running of the machine, and then we just add "and the XXXX team [1]" to the end of the author list.
However, in Astrophysics and particle physics, you have literally 4-5 pages of authors in alphabetical order.
@Primeagen HASKELL stream When ??
Watch out, Haskell makes you better developer
The best part of Haskell humor is that it Just makes you laugh. No side effects.
Can you link your publication?
He actually made the title "Haskell researchers discovers industry" 😂
Tried Haskell the learning curve is pretty high. The thing that fascinated me are functions withouth side effects.
you can choose to do that in your "normal" languages too. Just dont write side effects.
@@deidyomega well while its technically possible it becomes a little bit trickier with the use of frameworks.
@@deidyomega While it's great, that's not the same thing. If you just do that there's always going to be the "side effect by accident" factor, especially when working with other people or libraries. A language with a distinction between pure and impure functions can give you guarantees.
@@terryriley6410 assuming your evil friend didn't sprinkle the forbidden runes: ```unsafePerformIO```(a.k.a.. let's pretend IO x.... a impure action returning "x" is actually a just pure "x") in the code.
Maybe the last one who messed the production with that was made an example of.
@@deidyomega i mean... that could be said of types as well. also part of the runtime safety is a product of the hard rule.
My graduate advisor puts his name at the end of the author list unless he actually deserves first author. That usually only happens when he is collaborating with peers. If the grad student or undergrad did most of the work, he takes second or third author and the student(s) take first and second author. Academics are coming around to put students first on papers when they do the work.
I thought all Haskell people did was implement a more efficient way to calculate primes with the sieve of Eratosthenes.
a community of one member, the creator of the language
Javier Escuella.. it is Red dead redemption 2 character
What is monad?
My favorite terrible metaphor involved a series of snails eating other snails. Like... what?
It's literally just "how to do this thing, then that thing" - that's it. Jesus.
a monoid in the category of endofunctors
Author name has a typo btw, it's "Steve Yegge" not Regge*. All his blogs are great btw, big fan
His "Execution in the Kingdom of Nouns" (steve-yegge.blogspot.com/2006/03/execution-in-kingdom-of-nouns.html) is an absolute classic. Every OOP programmer should read it.
Purescript might be a bite sized intermediary between Typescript and Haskell
Dunno, to me it feels like just Haskell
purescript is quite far out from TypeScript
Purescript is improved Haskell
The funny thing about you calling it a ‘white paper’ language because when I used to write white papers I used Pandoc which is written in Haskell.
It would be cool to see Prime look at algorithms in Haskell.
They discovers it does they? Industry my precious.
what are haskels
Did anyone else notice that all the people in the article are from Red Dead Redemption?
The names of people come from the game Red Dead Redemption 1.
9:40 "We don't do those here"
What about APL though?
Dear primeagen , i am really excited about bejng so early , would definjtely warch it at 2x speed 😊
If you want something like haskell's type system and features, but also practical in industries, try Rust.
Micha Bell left the chat.
Yegge has some pretty trenchant commentary about agile methods, too…
Steve Yegge's old blogs are absolute gold.
I have a friend who works for a legit profit making company who's entire project is in Haskel :shrug:
javier escuella from red dead redemption?
Van Der Linde has a plan
You know... Cardano Blockchain uses Haskell.
I hope these math profs noticed that when trying to double the amount of industry programmers who give a sh!t. well how do I say it 1 * 2 is still 1
... is that the famous Haskell correctness?
Haskell is the final poneglyph.
Finally speaking of Haskell 🎉
All the names in the research are from red dead redemption
ah man, this was fire.
The name is Thenotforproductiongen
You know that you would get double the views if you dropped a "Prime learns Haskell" series. Don't lie to yourself and say that it's not true.
yeah , he should make some series like that , ofc if he gets the time for it
Popularity is a side effect and we don't want that...
Haskell is famous for being safe tho. Banks use it at prod and just don't telling anyone :)
well shit 💩 sigmund freud would be proud of that one 7:28
RIP Piq, doxxed by Prime 😂
@ThePrimeTime @ThePrimeagen ... you are doing awesome job man. Keep it up and why not bring in some deep research papers and make them easy for us mortals to understand. :).
Haskell inspired Rust to some extent.
Yep, perl, c++, and haskell; its a weird language.
@@complexity5545 true. Although I think C++ is a necessary evil.
Now time to switch to Xmonad to pay some respect!
Haskel : languages = NeoVim : editors
I give a shit about Haskell! But also don’t use it. I tried multiple times, but haven’t yet even been able to install the tooling. And I’m like, I could sit down and troubleshoot and work through it… But oh yeah I have stuff to do that actually matters. And if I can’t even just install it without having problems, that doesn’t seem to bode well for this language I’ll never get paid to use.
This is hilarious omfg
prime I challenge you to make a 4 Chan clone using only 1 single php file, live on stream
Cardano Blockchain written in Haskell & it's great. Secure, Scalable, Real Decentralized
The technical comparison of Etherum to Cardano is enough to convince anyone of the value of Haskell.
Wow I think I will learn haskell now 😅 ( bye guys see you in like a year )
I need him to watch "hitler reacts to functional programming"
That one is glorious indeed, but kinda hinges on knowing about some of the memes more seriously.
i stopped at dutch van der linde
I'm working at a giant international company and we're using Haskell as well (very much to my discomfort)
Exclusively or something specific?
@@Egzvorg in small areas but there almost exclusively. We focus on process automation and part of that is processing and analyzing a constant stream of incoming values. The processing and some basic analysis is done using Haskell as it's fast and the direct correlation between input and output of functional programming lends itself to such applications
I mean, #introspection 😏
Hasura a billion dollar indian Open source foundation that maintain GraphQl library of same nane, and cordana a mutli billion dollar crypto project are both entirely written in Haskell.
I am not your wife, but what the hell did you just say?
I just don't know what monads are. So far I think they are something like... a value that's inside somesh*t I mean something that has some kind of interface that allows me to make operations based on that "inner" value, without changing it.
It's a typeclass in Haskell, think interface, that's supposed to resemble category theory monads.
In practice, it just means when you have a parameterized type Type and you have it as Type, you can merge the layers together back into Type, plus support for mapping, support for injection, and observance of a bunch of contracts.
The big problem is that it's so abstract, say, over the type List, it just means flatten / map, on the type IO, it means "sequence the IO actions together / do an IO action that depends on the result of the previous IO action", on Optional, it means "propagate the null upwards, or do something with the non-null result", etc...
concatMappable containers, mappable Containers = Functors, concatable things = Monoid. The concatMap or >>= function of haskell is the chainable version of $, and is sort of a programmable semicolon. Also JavaScript's promises are Monads, they are used to give JS Async semantics in a imperative language, but Monads can be used to escape the embed the semantics of one language into another and some of those semantics like the List monad are not normally what you think about as languages.
@@aoeu256 The containers are a false analogy; i.e, is "Proxy a" a container? The datatype Proxy a can be lawfully instanced into the typeclass Monad, but the only possible value of Proxy a is Proxy-i.e, it contains nothing.
And for readers, Proxy a can be lawfully instanced into Functor (granting fmap) as well.
tfw monads don't compose
he/she/it das s muss mit
I think your Rust quote is backwards.
It should read:
Emotionally trivial.
Conceptually difficult.
So it prevents memory errors without me having to do anything? Yeah!
Let me get this straight. You need to ask the loan manager.... What's that? Borrow Checker? What type of name is that?.... to see if.................................................................................................................................................... really? Is this necessary? It's idiomatic?.........................................................Didn't you just move the problem to a different scope?...........................................................................Why does the compiler keep yelling at me?!!!........................................................................I'm going to invent my own/learn Zig.
Thanks for this, I'll start calling the borrow checker the "loan shark" from now on
Just like with loan sharks, don't borrow unless you know how you're going to return it already.
@@SimonBuchanNz If I knew that, I wouldn't have to borrow from a loan shark, I would go to a bank.
If I knew how it would return, I wouldn't need the checker, I would just do it.
@@NdxtremePro then every other language is right there to let you dangle your references or hit squirrelly reentrency bugs! But honestly, Rust is way easier once you realize that if you're getting borrow checker errors, you can just not borrow.
@@SimonBuchanNz But I want the new shiny. Its why I went to the loan shark, I mean borrow checker, in the first place.
first
lmao, imagine wasting your time in Monads, something "created" by a guy that never pushed 1 line of code into a real high avail system...hahahaha pathetic
Arrays and lists are monads, so you're automatically wasting your time in monads. It's just an interface description.
JavaScript promises are monads with then being the famous haskell >>= also called flatMap. Why not generalize the notion of JavaScript promises to be able to embed any programming language or semantic into another one.
JavaScript > Haskell
100% false
Damn that's one braindead take lmao
@@bckends_ greatest language of all time, cope harder nerd
@@Ataraxia_Atom y'all are bunch of children measuring their d.. languages
@@Ataraxia_Atom 3/10 try harder next time
The worldwide Haskell community met over beers. omg. I just watched Hitler reacts to FP and this came up next. Primeaperfection.
I'm trying to comprehend Haskell so I can follow Erik Meijer's 1996 "Monadic Parser Combinators" paper. I'm halfway through the paper and they introduced a new notation because "it's easier to read" and now I'm totally lost. The code samples are actually in some obscure FP language called Gofer, but CoPilot thinks it's Haskell. Fun.