Spark is probably the thing it's best known for in the real world. Of course, most users are using the Python API now. Additionally, I think Flink and Kafka were originally written in Scala, but also have substantial Java components. For consumer facing applications, Twitter is a pretty major Scala user. They switched from Ruby on Rails when they had scaling issues. Also, Lichess (open source chess server) is written in Scala,
@user-tx4wj7qk4t13 күн бұрын
Yes it is
@user-tk2jy8xr8b13 күн бұрын
Scala has path-dep types, Haskell doesn't
@impurepics13 күн бұрын
Is this a plus or a minus?
@MrDejvidkit12 күн бұрын
@@impurepics Plus
@user-tk2jy8xr8b12 күн бұрын
@@impurepics I'd say a plus for Scala. Not a huge one, but still
@Jankoekepannekoek13 күн бұрын
Scaladoc also has hoogle-like search based on type signatures, since Scala 3.
@impurepics13 күн бұрын
@@Jankoekepannekoek oh! Is there a way to have scaladoc/search work across multiple libraries or organizations?
@Jankoekepannekoek12 күн бұрын
@@impurepics I don't know this answer. I have not dived that deep into the rabbit hole.
@i-am-the-slime13 күн бұрын
Great video! It's quite fair of you to leave out PureScript!
@impurepics13 күн бұрын
I've only used PS in 2.5 companies, it would've broken the symmetry
@hdbrot13 күн бұрын
But it‘s "Quota" :)
@impurepics13 күн бұрын
😵💫
@hdbrot13 күн бұрын
@@impurepicsNo worries! If the program code says it‘s "Qouta", then so be it. The computer makes no mistakes.
@vigneshwaranm198914 күн бұрын
Very nice. Thank you.
@samuraijosh159515 күн бұрын
If you want to get popular on live-streams you could consider teaming up with slightly more popular FP bros on Twitch like Tsoding or TJ.
@samuraijosh159515 күн бұрын
fuck man your channel is only one of the few that talk about Haskell and fp in this detail. Hope you get more views and subs, you got a sub from me!!! thanks for the good work
@NoOne-ev3jn18 күн бұрын
Haskell has everything needed to do what any imperative language does
@isaacvandoren473320 күн бұрын
Roc is great! It’s the performant pragmatic language with great tooling that I’ve been wanting. The combo of structural records, structural tag unions, and type inference is delightful. And I think some very interesting things will come from the platform design. Definitely worth checking out!
@smores5617 күн бұрын
ROC MENTIONED
@Danielo51522 күн бұрын
Have you been spying on me recently while I was researching some new languages and just made a video about it?
@tusharadhatrao474923 күн бұрын
Loved it :)
@UrsEnzler24 күн бұрын
Well played! However, as an F# developer, I wish the base library had been built with FP concepts in mind rather than for C#.
@Son0fBeelzebub26 күн бұрын
lack of lisps, but based. didn't notice any bias here
@timedebtor27 күн бұрын
not a single lisp
@Mglunafh27 күн бұрын
Thank you for the comprehensive and thorough analysis of the available functional programming languages, i could wish i had a time to effectively learn them all 😭
@Jankoekepannekoek27 күн бұрын
No variant of Lisp in the list? (pun intended)
@kmr_tl450927 күн бұрын
Useful vid. I hear these a lot, so I can just respond with a timestamp to this video next time.
@iraqinationalist777827 күн бұрын
Where is Elixir?
@jhonyhndoea27 күн бұрын
No elixir or clojure. why?
@oserodal270227 күн бұрын
Why does no one ever talk about Idris? (I've never written a line of Idris code)
@ukrustacean28 күн бұрын
Cool. Absolutely loved the video ❤ Probably I need to spend some time this weekend checking out Unison and Gleam 🤔
@mctechcraft728 күн бұрын
I feel like I’m starting to notice a pattern 🤔
@greyshopleskin231528 күн бұрын
I forgot about PureScript. Basically Haskell in the browser. Very very nice. I need to try it out. Also, did you know ReScript? It’s Ocaml for browsers
@balogunakanbi632928 күн бұрын
Clojure???
@hyperrealhank28 күн бұрын
F sharp is F tier
@user-dn7qr7vs1h28 күн бұрын
I wouldn't put Elm in one row with languages that allow to build abstractions. Elm is like a Go from the FP world. As for the Purescript, which is my main working language... The only things that are better in Purescript than in Haskell is row polymorphism and JS interop. However the type inference sucks (most likely because of the row polymorphism), type errors suck, built-in linting rules (no orphane instances at all and things like that) suck. It is no fun to code on Purescript in comparison to haskell. One of the worst languages to learn FP or programming, much worse than haskell (actually I think Haskell is good as the first programming language). I could recommend to learn Purescript strictly AFTER Haskell, when you already know how a language like this works, so you can find the actual type errors (since Purs pretty often will explode pretty far from the place where the actual error occurs) and so on. Also don't forget that purescript lacks many type-level features of Haskell that you will always miss: type families (prepare to a huge amount of boilerplate if you want to have nice type-level abstractions!), GADTs, DataKinds, linear types, etc..
@ZombieJig28 күн бұрын
I would chose F# due to the strength of the standard library, which is in my view as important as the language.
@lilbigdooter26 күн бұрын
It's also got the most consistent editor tooling in my experience, although I haven't tried every language on the list
@roelhemerik571526 күн бұрын
Its also the least “functional” functional programming language of the bunch, especially when you use that extended standard library.
@the_mastermage25 күн бұрын
@@roelhemerik5715 Isnt that due to the fact it can use most of .NET which is mainly based in C# to begin with?
@user-vz9cq8ci9b28 күн бұрын
I actually like Idris 2 more than Haskell, so I would add it to S tier as well. Also, I'm not quite comfortable with putting a language that has been abandoned for 5 years (Elm) to S tier
@sigmundwong248928 күн бұрын
Gotta love Idris2! Dependent types, quantitative types, fancy interactive compiler, eager rather than lazy... and single colon for type annotations. \*chef kiss\*
@kilianvounckx990417 күн бұрын
Elm is not abandoned, it is done. Also, latest commit to it was 8 months ago, so far from 5 years. Not all languages need new features every week
@protosevn28 күн бұрын
Least biased programming tier list video :D
@victorpinasarnault913528 күн бұрын
What about LISP? And Scheme?
@smallcat282027 күн бұрын
Not sure, but I guess S tier :)
@simpleprogrammingcodes28 күн бұрын
I had to use Oz for studies. What is your opinion on Oz? Is it a functional language? If so, how good is it?
@impurepics28 күн бұрын
I've never seen it tbh
@capability-snob27 күн бұрын
Everyone who loves the BEAM languages should at least try Oz for contrast. It's functional-reactivity applied to distributed systems.
@simpleprogrammingcodes27 күн бұрын
@@capability-snob BEAM? What do you mean? What makes these languages special?
@capability-snob26 күн бұрын
@@simpleprogrammingcodes logic variables (like the ones Oz uses) for concurrency is a great concept, and feel very functional IMO. Languages that target the BEAM (erlang, elixir, etc) also have concurrent interaction baked into the languages themselves.
@stercorarius13 күн бұрын
if anyone reading this wants to learn more about Oz, check out the book "Concepts, Techniques, and Models of Computer Programming" (2004)
@NiDeCo28 күн бұрын
My man just disguised an introduction to which functional programming languages there are as a ranking video, just because it gets the clicks... touché.
@megaman13able28 күн бұрын
No elixir??
@avinashsridhar712428 күн бұрын
I think he prefers statically typed languages, he mentioned it at the beginning.
@HonzaPokorny28 күн бұрын
Where are the lisps? 🙂
@pierrefley500027 күн бұрын
If Lisp counts as a functional language, then so does Perl.
@ninjaaron27 күн бұрын
@@pierrefley5000 He said "Lisps". Common Lisp may not be particularly function (though it is moreso than Perl), Scheme is pretty much functional and Clojure is very much function--moreso than some of the languages in this video.
@sayanmallick264428 күн бұрын
s teir video
@amr316228 күн бұрын
Based, and absolutely unbiased :)
@MikkoRantalainenАй бұрын
15:52 I would argue that neither monads for "abilities" are teachable. Definitely not easy to teach as direct style procedural programming.
@Axman6Ай бұрын
I really enjoyed watching this, it felt far more realistic than many dev videos where people don’t make mistakes. Getting quantifiers working is *hard*, and I’m sure that I would’ve gotten just as lost. In my last job, I had to implement a parser and evaluator for the reflexes found in XML schema. Luckily the Haskell wiki has the page “Regular expressions for XML Schema”, which has the most beautiful implementations of regexes you’ll ever see. I’d love to see you go back through this exercise after reading that (and discussing the page too). This is your first video I’ve watched but I’m loving it - instant subscribe ❤
@MikkoRantalainenАй бұрын
Great video! I think it would be better to use more readable font in the editor such as Source Code Pro (free open source font) because your current font uses kerning and glymph substitution tricks to make it harder to understand what you're actually typing.
@Axman6Ай бұрын
As someone who’s been programming Haskell for about 15 years, and a lot of that time using Fira Code, I didn’t even notice 😅 This is a good tip though, for anyone trying to make programming understandable.
@GavinFreebornАй бұрын
Just curious, what program do you use for ceeating your usual slideshows?
@impurepicsАй бұрын
The slides with text? Either google slides or apple keynotes. With “animations” via procreate
@FredMateriasАй бұрын
Hey, just a tip I stumbled upon a while back, instead of changing the haskell version of your project just compile hls using ghcup, you can do that using "ghcup compile hls -g master --ghc ${your-target-version}" and it is much better than changing the version and probably breaking something down the line.
@federicoagustinsawadyoconn2716Ай бұрын
Some things I read in the comments or see in the video make me realize that some poeple analyze Haskell as if its computing model were the same as other traditional languages, when it is not. Referential transparency, in the computing model that Haskell chooses to have, is extremely important, so it is not that optional. That is the main reason why the language is lazy. And it is the main reason why one also chooses to program in Haskell. Algebraic structures like monads or applicative functors are excellent in terms of maintaining equational reasoning more than other options, so they are not criticizable in the same way as a feature in a imperative language. They are not just a feature that solves something from a utilitarian point of view neither, because they are a mathematical solution for mantaining clear reasoning about pure code, which in Haskell is more important than in other languages. I know that many want features in Haskell that are also utilitarian, which is not bad, but please understand that the language was not designed for that, so you have to be aware of what I mentioned before when analyzing some of the pain points of the language.
@user-pe7gf9rv4mАй бұрын
Thank you 100%; this was a very informative and concrete video, its been hard to find real understandable (but not trivial "calculatory") haskell materials.
@Jankoekepannekoek2 ай бұрын
Misleading title. You didn't just swap Stack for Cabal. You are still using some other tools that offer the same functionality as Stack.
Пікірлер
There is now MoonBit, which targets WASM and JS
You're right, the square hole
For me this video is S tier.
Where's clojure?
whats scala real world use case?
Spark is probably the thing it's best known for in the real world. Of course, most users are using the Python API now. Additionally, I think Flink and Kafka were originally written in Scala, but also have substantial Java components. For consumer facing applications, Twitter is a pretty major Scala user. They switched from Ruby on Rails when they had scaling issues. Also, Lichess (open source chess server) is written in Scala,
Yes it is
Scala has path-dep types, Haskell doesn't
Is this a plus or a minus?
@@impurepics Plus
@@impurepics I'd say a plus for Scala. Not a huge one, but still
Scaladoc also has hoogle-like search based on type signatures, since Scala 3.
@@Jankoekepannekoek oh! Is there a way to have scaladoc/search work across multiple libraries or organizations?
@@impurepics I don't know this answer. I have not dived that deep into the rabbit hole.
Great video! It's quite fair of you to leave out PureScript!
I've only used PS in 2.5 companies, it would've broken the symmetry
But it‘s "Quota" :)
😵💫
@@impurepicsNo worries! If the program code says it‘s "Qouta", then so be it. The computer makes no mistakes.
Very nice. Thank you.
If you want to get popular on live-streams you could consider teaming up with slightly more popular FP bros on Twitch like Tsoding or TJ.
fuck man your channel is only one of the few that talk about Haskell and fp in this detail. Hope you get more views and subs, you got a sub from me!!! thanks for the good work
Haskell has everything needed to do what any imperative language does
Roc is great! It’s the performant pragmatic language with great tooling that I’ve been wanting. The combo of structural records, structural tag unions, and type inference is delightful. And I think some very interesting things will come from the platform design. Definitely worth checking out!
ROC MENTIONED
Have you been spying on me recently while I was researching some new languages and just made a video about it?
Loved it :)
Well played! However, as an F# developer, I wish the base library had been built with FP concepts in mind rather than for C#.
lack of lisps, but based. didn't notice any bias here
not a single lisp
Thank you for the comprehensive and thorough analysis of the available functional programming languages, i could wish i had a time to effectively learn them all 😭
No variant of Lisp in the list? (pun intended)
Useful vid. I hear these a lot, so I can just respond with a timestamp to this video next time.
Where is Elixir?
No elixir or clojure. why?
Why does no one ever talk about Idris? (I've never written a line of Idris code)
Cool. Absolutely loved the video ❤ Probably I need to spend some time this weekend checking out Unison and Gleam 🤔
I feel like I’m starting to notice a pattern 🤔
I forgot about PureScript. Basically Haskell in the browser. Very very nice. I need to try it out. Also, did you know ReScript? It’s Ocaml for browsers
Clojure???
F sharp is F tier
I wouldn't put Elm in one row with languages that allow to build abstractions. Elm is like a Go from the FP world. As for the Purescript, which is my main working language... The only things that are better in Purescript than in Haskell is row polymorphism and JS interop. However the type inference sucks (most likely because of the row polymorphism), type errors suck, built-in linting rules (no orphane instances at all and things like that) suck. It is no fun to code on Purescript in comparison to haskell. One of the worst languages to learn FP or programming, much worse than haskell (actually I think Haskell is good as the first programming language). I could recommend to learn Purescript strictly AFTER Haskell, when you already know how a language like this works, so you can find the actual type errors (since Purs pretty often will explode pretty far from the place where the actual error occurs) and so on. Also don't forget that purescript lacks many type-level features of Haskell that you will always miss: type families (prepare to a huge amount of boilerplate if you want to have nice type-level abstractions!), GADTs, DataKinds, linear types, etc..
I would chose F# due to the strength of the standard library, which is in my view as important as the language.
It's also got the most consistent editor tooling in my experience, although I haven't tried every language on the list
Its also the least “functional” functional programming language of the bunch, especially when you use that extended standard library.
@@roelhemerik5715 Isnt that due to the fact it can use most of .NET which is mainly based in C# to begin with?
I actually like Idris 2 more than Haskell, so I would add it to S tier as well. Also, I'm not quite comfortable with putting a language that has been abandoned for 5 years (Elm) to S tier
Gotta love Idris2! Dependent types, quantitative types, fancy interactive compiler, eager rather than lazy... and single colon for type annotations. \*chef kiss\*
Elm is not abandoned, it is done. Also, latest commit to it was 8 months ago, so far from 5 years. Not all languages need new features every week
Least biased programming tier list video :D
What about LISP? And Scheme?
Not sure, but I guess S tier :)
I had to use Oz for studies. What is your opinion on Oz? Is it a functional language? If so, how good is it?
I've never seen it tbh
Everyone who loves the BEAM languages should at least try Oz for contrast. It's functional-reactivity applied to distributed systems.
@@capability-snob BEAM? What do you mean? What makes these languages special?
@@simpleprogrammingcodes logic variables (like the ones Oz uses) for concurrency is a great concept, and feel very functional IMO. Languages that target the BEAM (erlang, elixir, etc) also have concurrent interaction baked into the languages themselves.
if anyone reading this wants to learn more about Oz, check out the book "Concepts, Techniques, and Models of Computer Programming" (2004)
My man just disguised an introduction to which functional programming languages there are as a ranking video, just because it gets the clicks... touché.
No elixir??
I think he prefers statically typed languages, he mentioned it at the beginning.
Where are the lisps? 🙂
If Lisp counts as a functional language, then so does Perl.
@@pierrefley5000 He said "Lisps". Common Lisp may not be particularly function (though it is moreso than Perl), Scheme is pretty much functional and Clojure is very much function--moreso than some of the languages in this video.
s teir video
Based, and absolutely unbiased :)
15:52 I would argue that neither monads for "abilities" are teachable. Definitely not easy to teach as direct style procedural programming.
I really enjoyed watching this, it felt far more realistic than many dev videos where people don’t make mistakes. Getting quantifiers working is *hard*, and I’m sure that I would’ve gotten just as lost. In my last job, I had to implement a parser and evaluator for the reflexes found in XML schema. Luckily the Haskell wiki has the page “Regular expressions for XML Schema”, which has the most beautiful implementations of regexes you’ll ever see. I’d love to see you go back through this exercise after reading that (and discussing the page too). This is your first video I’ve watched but I’m loving it - instant subscribe ❤
Great video! I think it would be better to use more readable font in the editor such as Source Code Pro (free open source font) because your current font uses kerning and glymph substitution tricks to make it harder to understand what you're actually typing.
As someone who’s been programming Haskell for about 15 years, and a lot of that time using Fira Code, I didn’t even notice 😅 This is a good tip though, for anyone trying to make programming understandable.
Just curious, what program do you use for ceeating your usual slideshows?
The slides with text? Either google slides or apple keynotes. With “animations” via procreate
Hey, just a tip I stumbled upon a while back, instead of changing the haskell version of your project just compile hls using ghcup, you can do that using "ghcup compile hls -g master --ghc ${your-target-version}" and it is much better than changing the version and probably breaking something down the line.
Some things I read in the comments or see in the video make me realize that some poeple analyze Haskell as if its computing model were the same as other traditional languages, when it is not. Referential transparency, in the computing model that Haskell chooses to have, is extremely important, so it is not that optional. That is the main reason why the language is lazy. And it is the main reason why one also chooses to program in Haskell. Algebraic structures like monads or applicative functors are excellent in terms of maintaining equational reasoning more than other options, so they are not criticizable in the same way as a feature in a imperative language. They are not just a feature that solves something from a utilitarian point of view neither, because they are a mathematical solution for mantaining clear reasoning about pure code, which in Haskell is more important than in other languages. I know that many want features in Haskell that are also utilitarian, which is not bad, but please understand that the language was not designed for that, so you have to be aware of what I mentioned before when analyzing some of the pain points of the language.
Thank you 100%; this was a very informative and concrete video, its been hard to find real understandable (but not trivial "calculatory") haskell materials.
Misleading title. You didn't just swap Stack for Cabal. You are still using some other tools that offer the same functionality as Stack.