Skip to content

Add "Why Haskell?" section (alternative) #342

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
May 29, 2025
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
57 changes: 57 additions & 0 deletions site/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,62 @@ <h2>Try it!</h2>

<br>

<div class="features">
<div class=" container ">
<h2>Why Haskell?</h2>
<div class=" row ">
<div class=" span6 col-md-6">
<h3>A new paradigm</h3>
<p>Express your ideas clearly and learn a new way of thinking about programming. Based on lambda calculus Haskell is a

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why are "express your ideas clearly" and "learn a new way of thinking about programming" in the same sentence? They seem like different (though connected) ideas. Seems better to me to focus on the latter here, and save the former for a different section.

"Based on lambda calculus": should have a comma after this, but also I'd advocate for dropping it. I think there's a careful balance between new terminology and ideas being intriguing and being off-putting. Having just a few seems best, like "pure", "statically typed", "lazy", "immutable" and "functional". Referential transparency and lambda calculus feel like too much, at least for me.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How about: "Haskell is pure and lazy, has immutable data structures, and lazy evaluation: these concepts will expand your programming horizons.

I find this less compelling.

I want to start every section with an "action" that involves the reader. The proposed wording feels a bit more dry to me.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why are "express your ideas clearly" and "learn a new way of thinking about programming" in the same sentence? They seem like different (though connected) ideas. Seems better to me to focus on the latter here, and save the former for a different section.

Yes, I think we could move "express your ideas clearly" somewhere else. But where?

"Based on lambda calculus": should have a comma after this, but also I'd advocate for dropping it. I think there's a careful balance between new terminology and ideas being intriguing and being off-putting. Having just a few seems best, like "pure", "statically typed", "lazy", "immutable" and "functional". Referential transparency and lambda calculus feel like too much, at least for me.

Can you suggest an actual wording? I'm a bit at loss how to put all this together.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How about: "Haskell is pure and lazy, has immutable data structures, and lazy evaluation: these concepts will expand your programming horizons.

I find this less compelling.

I want to start every section with an "action" that involves the reader. The proposed wording feels a bit more dry to me.

I meant that you start with "Learn a new way of programming", then my sentence.

Copy link

@reubenharry reubenharry May 23, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd maybe put "express your ideas clearly" in the declarative section.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you suggest an actual wording? I'm a bit at loss how to put all this together.

See below

purely functional programming language that features referential transparency, immutability and lazy evaluation.
Concepts that will blow your mind

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Both grammatically and stylistically, I think "Concepts that will blow your mind" could be improved. Maybe something like: "learn a new way of thinking about programming: functional concepts like referential transparency, immutability and lazy evaluation are a joy to learn, and will expand your horizons and abilities"

Copy link
Contributor Author

@hasufell hasufell May 14, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What's grammatically wrong with it?

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"Concepts that will blow your mind" isn't a sentence, it's a phrase, so it sounds weird here (to me, but mileage may vary) as opposed to e.g. "These are concepts that will blow your mind".

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We can use a semicolon instead?

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It still sounds weird to me, because either side of a semicolon should be a sentence. I'd say a comma would work: "...and lazy evaluation, concepts that will..."

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this is a classic place to use an em-dash :)

although they've been getting a bit of a bad reputation thanks to ChatGPT and friends overusing them

Express your ideas clearly and learn a new way of thinking about programming. Based on lambda calculus, Haskell is a purely functional programming language that features referential transparency, immutability and lazy evaluation—concepts that will blow your mind.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How about: "Haskell is pure and lazy, has immutable data structures, and lazy evaluation: these concepts will expand your programming horizons.

&mdash; relearn programming while having an absolute blast.
</p>
</div>
<div class=" span6 col-md-6">
<h3>Composition and predictability</h3>
<p>Reason about large pieces of code and compose them easily. There is no global state
or mutable variables obscuring the meaning of your program. The strong type system makes sure there are no surprises
&mdash; never again will you have to guess what your program does at execution time.
</p>
</div>
</div>
<div class=" row ">
<div class=" span6 col-md-6">
<h3>Declarative</h3>
<p>Write your programs declaratively by utilizing the power of pure functions and algebraic data types.
In Haskell we don't write how a program should be executed, we just describe its logic

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe: "Don't worry about evaluation order or execution details when it's not relevant to your goals - just write a program by describing its logic".

btw, I worry that the word "logic" will cue people to think of "logic programming".

&mdash; never again be forced to think about evaluation order or execution details.
</p>
</div>
<div class=" span6 col-md-6">
<h3>Performance</h3>
<p>Squeeze out the last ticks of your multi-core processors, thanks to best-in-class support for async,
concurrent and parallel programming... made possible via garbage collection and green threads.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the "... made possible via" feels grammatically weird. Just "parallel programming...This is made possible by" would be better, I feel

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Starting another sentence breaks the flow. We could replace "via" with "by" though. Not sure that makes much of a difference.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Then I'd just avoid the "..." and use a comma.

Use advanced streaming libraries for ultra efficient data processing.
</p>
</div>
</div>
<div class=" row ">
<div class=" span6 col-md-6">
<h3>Abstraction</h3>
<p>Build powerful abstractions that are not possible in other languages. Only your imagination is the limit, due to

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"Only your imagination is the limit" feels a little vague. Why not just "Build powerful abstractions that are not possible in other languages, thanks to polymorphism...".

Rather than "has its roots in programming language research", why not: "has a design deeply rooted in programming language theory".

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've been thinking to ditch this part and replace it with:

Stability meets Evolution

Build powerful abstractions via latest functional programming principles. While Haskell’s core is rock stable, the language is constantly evolving, but does so through rigorous processes. Learn new tricks and features as you go, while relying on a solid foundation.

Which will then more nicely correlate with an alternative headline described here: https://discourse.haskell.org/t/emphasize-why-haskell-on-haskell-org-landing-page/12036/47

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sounds good. Minor note: "via the latest functional programming principles". "rock solid" not "rock stable". I'd personally avoid "tricks" and replace it with "concepts".

polymorphism, type classes and more advanced typesystem features.
Haskell has its roots in programming language research and will always be at the forefront of expressivity.
</p>
</div>
<div class=" span6 col-md-6">
<h3>Excellent tooling</h3>
<p>A tooling story that's truly amazing: spawn your toolchain with GHCup, build your project with cabal, get editor integration with haskell-language-server

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Feels a little hyperbolic. How about a more understated: "Simple, effective and modern tooling: spwan ..."

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"Simple" is a rather controversial property when it comes to tooling and it's unclear to me what "effective" would mean.

I think having an amazing tooling story is our goal. Yes, we're overstating a bit.

Again: the hyped up language is on purpose. Your proposed wording makes it a bit more dry, in my opinion. Those are different styles.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That's fair. But while I think Haskell's tooling is very good (especially compared to 10 years ago when I started using Haskell), is it really a core feature that should be used as an argument for adoption? It seems to me that the obvious way for the tooling to shine is that it's now easy for people to spend 10 minutes trying out Haskell, and have an straightforward time getting set up.

I'm not opposed to less dry language, stylistically speaking, but this seems like an odd target for hyperbole. Should tooling even aim to be amazing (rather than just so straightforward that you never have to think about it)? The things I'd want to be overstated about are how Haskell is pure, makes refactoring complex code easy, etc.

&mdash; everything at your fingertips.
GHC is the next generation compiler that supports all of your favorite platforms.
</p>
</div>
</div>

</div>
</div>

<div id="community-wrapper">
<div class="videos">
<div class=" container ">
Expand Down Expand Up @@ -519,3 +575,4 @@ <h3>Psst! Looking for the wiki?</h3>
</div>
</div>
</div>

Loading