Thoughts on Haskell?

A lot of people have recommended that I learn this language, but when asked why it's so important all I get is zen philosophy bullshit like "transformative experience" and "enlightenment, you'll only know when you learn it". It's said to be a language for geniuses by geniuses, but fuck that I want to get shit done

Are there any practical advantages or uses for Haskell that other languages don't offer?

Attached: haskell.png (440x311, 7K)

Other urls found in this thread:

github.com/Gabriel439/post-rfc/blob/master/sotu.md
twitter.com/SFWRedditImages

it has a more mature toolchain than rust

>Are there any practical advantages or uses for Haskell that other languages don't offer?
concurrency

>what is erlang

Other languages do have the same expression that haskell offers nor the type safety

You can’t toss aside Satori, however you do need a desire for it

Good: Decent GC and concurrency story.

Bad: Terrible tooling, idiomatic code leads to non performant code, code written for performance is harder to read than C, retarded syntax.

Understanding the typeclassopedia doesn't make you a genius. So called type theorists are a bunch of circle jerking faggots and you don't have to be one in order to write successful Haskell. If anything, it's a bit of the same story as in Common Lisp and OCaml, where abusing macros and modules can nuke your project.

You can program anything in any language. It's not like Haskell can do something Python can't (and vice versa), but constructing a program is very different between the two.

Haskell is built on "lambda calculus", a system of logic created by some guy who really likes math, and functional programming ideas. Each function takes a specific set of arguments as inputs and maps each to a specific output and that's the entire language. You basically can't do anything besides define a function's acceptable inputs and how it produces an output. The idea is that because the focus is always on input -> output and that the functions aren't modifying inputs (only producing outputs), you'll end up with a well defined program without any "undefined" behavior that's difficult to find the cause of.

You should try solving some basic programming challenges in Haskell to see how it works. I found you have to think about solving problems from a very different perspective.

no, fucking idiot. Haskell have noting to do with zen

it is pure applied math - strongly typed sugared lambda calculus and hence applied logic

for 12 year old - it is as pure logic expressed like math, and than shit compiles into a native code

It makes you think in terms of data transformation and threading state and side effects confidently.
There is a reason every language is trying to adopt functional programming concepts.

>It's said to be a language for geniuses by geniuses, but fuck that I want to get shit done
youre not a genius

Good for concurrency and inherently stateless problems ie writing a compiler. The type system will save you from many bugs, and its easier to write useful abstractions when your code is stateless and not OO. I also like the syntax a lot since you don’t have to deal with parentheses hell. Half of all design patterns in OOP are basically just workarounds for lacking first class functions.

nice aldi logo you got there

>retarded syntax.
dude what

Not him, but Haskell imho overly relies on operators and syntactic sugar, making it very terse, sometimes too terse.
The language is solid from a semantic point of view, but I'd have preferred a more Lisp-like syntax.

That's a good point. I think a good middle ground would have been to get rid of infix operators (except for $), that would be a lot closer to Lisp.

Haskell is a general purpose programming language, so it can be used for almost any task. For a more detailed breakdown, see
github.com/Gabriel439/post-rfc/blob/master/sotu.md

Haskell is quite hard to learn, so if youre just trying to smash some script out, yeah go ahead and use bash or whatever. But if you have time, Haskell teaches you some interesting things that are really applicable to other languages.

Why do pretentious languages like this one feel the need to invent their own special syntax for everything?
I'd have thought we've settled on the curly brace style we're all familiar with, used by every big language except python, but no.

You can't even understand basic ass haskell code unless you go out and learn it, but every other language you can read if you just know one, you might not be able to write it but you can get the gist of what a java snippet is doing even if you only know c++.

why do brainlets think languages with entirely different semantics should have the same syntax?

>what is go

>t. room temp IQ mongoloid

>every other language you can read if you just know one
Yes, this is the fucking worst.

I can read books from England, Scotland, Wales, Ireland, US, Canada and even Jamaica just fine, but fucking snowflake Spanish have to be all weird and incomprehensible.

It's just bad language design desu

I have 10 yoe and manage a popular Haskell project.

It's an amazing language that has taught me more about programming than anything else, but the practical advantages are pretty niche.

If you're writing something "mathy" like a parser or business rule engine or something, then yes, I'd pick it over Java/C++ any day. The type safety is amazing and the flexibility lets you do things in five lines that would take days of refactoring in other languages.

It's a bit of a resource hog though, and the space leaks are a bitch. Debugging is relatively bad, and you can forget about useful stack traces.

So yeah, if you just want to get shit done and you don't have an academic mindset, I don't think it's the language for you

>what is clojure

Container programming language for academia autism.

Explain to me why it needs different semantics in the first place.
You're still programming a computer, there's certain structures that are simple ingrained in its architecture.

Any language that doesn't have shit like for loops will be a joke until someone builds a cpu architecture it which that makes sense.

>Explain to me why it needs different semantics in the first place.
Different models of computation are equivalent in expressive power, but different models are distinct in their ability to eloquently express certain problems.
>Any language that doesn't have shit like for loops will be a joke until someone builds a cpu architecture it which that makes sense.
There is overhead in achieving the equivalence, but unless what you're writing needs to be efficient it doesn't matter. Procedural programming paradigms remain optimal in these circumstances but that's not every circumstance.