Hacker Newsnew | past | comments | ask | show | jobs | submit | the-grump's commentslogin

Still they are not notes, which means GP continues to be valid.

You made me look up the definition of "note." It appears to mean a short piece of writing meant to be commentary or to share information. OP's link looks like it's both of those things.

Are you perhaps confusing "note" with "analysis"?


As someone who loves Haskell more than any other language, some challenges are

- the tooling is decades behind, say, Rust or Go

- finding the right library in looks very different in Haskell--you frequently start with the signature on Hoogle. Agents can learn this but it's not the same as "web search"

- creating the right solution also looks different. It's usually borne out of thinking about the types and coming up with the correct algebra. Again models can probably learn to create the right types and orient the solution around that, but it's not automatic

- same today as yesterday, laziness is a blessing and a curse. The runtime can do unpredictable things when you suddenly evaluate a deep thunk

- GHC directives effectively mean there are multiple "Haskells"

Some of those are a result of the "avoid success at all costs" mantra. You can't shake that off in a day. It will take a concerted effort to make it more amenable for seamless adoption.

Haskell continues to be my favorite language to write and read, but Rust is the more practical language with a rich type system. If you're looking for something approaching Haskell's expressiveness but with fewer of these issues, check out PureScript.


No way tooling is decades behind. You have a decent LSP, debugger, package manager and REPL.

Laziness is hard to observe, maybe Strict and StrictData would become more popular in use within this context.

I haven't checked in a while now if effects have become the norm in the ecosystem, or if some solution exists for "string" types, but for me all of Haskell's expressivity is lost in the noise of endless conversion function, wrapper types when stacking monads, and import fiddling.


The package manager/build system is anything but decent. Any Haskell project will involve at least 24 hours worth of manual dependency conflict resolution.

No, this is not the reality of using Haskell packages.

The problem you describe was solved more than a decade ago.

You use a Stackage snapshot (https://www.stackage.org/lts) which is a curation of packages that work together, similar to a Linux distribution like Debian, carrying one version per package.

Our company using Haskell has not spent 1 minute doing "dependency resolution" in the last 10 years, not has anybody we know.


Pretty dishonest take. The most gracious read on this is that you encountered this situation ages ago and assume it's still the case today.

I've been writing Haskell in production for almost 10 years now and manual dependency resolution has never been a thing.


> - the tooling is decades behind, say, Rust or Go

If only Rust had something like GHCi.

Stack and Cabal have longer history than cargo, and Stackage for puzzle dependencies.

> - GHC directives effectively mean there are multiple "Haskells"

A bit like macro libraries and what features are enabled where in Rust


> the tooling is decades behind, say, Rust or Go

That's definitely not true, even if that was true maybe 6 years ago. As someone who's uses Haskell daily and also many other languages, I can see Haskell's tooling as more advanced than many others.


I tried building a cross platform shared library. I still couldn't get GHC to generate the library with Haskell's Runtime (RTS) statically linked. Tried multiple AI models and nothing could make it work. Eventually gave up after a month.

Also there's no support for Android and iOS, atleast not without spending months in recompiling GHC with haskell.nix or other third party projects.

Eventually I switched to Rust. It's tooling is so mature that I can focus on developing than compiling GHC.

Despite these demerits, I love Haskell language and lazy eval. I wish I can use it one day.


I built an example project showing how to build shared libraries in Haskell, in 2019.

https://github.com/mietek/haskell-so-example


Think problem is not in advanced features but in stability, integration and streamlining - compared to Rust/cargo.

This is exactly what I meant. It's not the ability to build things; of course you can.

The progress has been in agreeing on a coherent interface everyone uses and which handles 99% of what most projects need with minimal friction.


I think the GHC directives are what hurts Haskell the most. At this point they should just embrace the GHC extensions and make it the "official" Haskell.

Having to enable them in the code is just a hassle. Just make it official and be done with it, just roll it into the language.


As someone else mentioned, that's what GHC2021 and GHC2024 are for.

If you're suggesting that _every_ GHC extension is enabled then I think you don't really understand the implications of that. Many aren't compatible with each other in varying degrees, for one. They also exist on a wide range of stability and production readiness.

On the other hand, I agree that the extensions indeed hurt Haskell. Standardizing on them is absolutely necessary to survival for a team of even a modest size. GHC2021 and GHC2024 help to do this for the community at large.

The real "deep" change that I think would be best for Haskell is probably impossible - that would be for GHC to split into two compilers - one for production use and one for research. I don't even know HOW we'd do that but I think that's ultimately what us production users want in some form or another.


Do GHC2021 and GHC2024 not do what you want?

Again, those are _GHC_ extensions, not "standard" Haskell. At this point it's not Haskell, it's Glasgow Haskell.

And those features are not a library that you just throw in, they are compiler specific.


who cares

the only other haskell compiler is MicroHs. and it has no pragmas. it just enables the whole thing.

this is not a real problem in practice. even without the GHC20XX stuff (which is nice). it feels like a problem a novice would point at (and be totally wrong)

sorry your favorite language doesn't let you import language features according to your needs. half of them have trade-offs! like -XOverloadedLists. Useful, but hurts inference. Maybe you don't want it globally. But maybe in a few modules, it's perfect. {-# LANGUAGE OverloadedLists -#} is the answer that no other mainstream lang has.

-XPolyKinds is another great example of that sort of extension.


Which compiler would you like to use?

Preferably there would be more implementation. But if they only implement the "standard" language, it will be missing a lot of things. That is the point! It's not Haskell anymore. It's Glasgow Haskell. It's its own language at this point.

> - the tooling is decades behind, say, Rust or Go

No way. Where vibe-coded Rust contains tons of "unsafe", you can have your vibe-coded Haskell sprinkled with "unsafePerformIO" and "unsafeCoerce" ;)


accursedUnutterablePerformIO or bust :)

> the tooling is decades behind

For all the academic interest the language has, it seems very few of those people want to do anything foundational to make the language more ergonomic and more relevant.


cabal is as cargo-level but has a bad CLI. it really isn't that bad. and Haskell has amazing Nix support. Like 3 different good options there depending on your project.

and this isn't even to mention stack..

now, if you're a not smart enough to handle there being many options existing in a world of trade-offs..haskell was never for you :)


"haskell user smart". Condescend much?

And Haskell baking itself to Nix, also not sure if that is a good option. Try compiling that on say OpenBSD or FreeBSD.


Haskell doesn't bake itself to Nix at all. Nix just happens to have multiple pretty mature and usable libraries for packaging Haskell.

> the tooling is decades behind, say, Rust or Go

Can AI not help speed this up?

As someone who DOESN'T use Haskell... What specifically is it missing?

Are you conflating ecosystem with tooling?

> If you're looking for something approaching Haskell's expressiveness but with fewer of these issues, check out PureScript

Rust is quite expressive. Is Haskell really substantially much more?

I do think Rust is a great language for LLMs because I think expressiveness is key.


Haskell is more easily compared with e.g. OCaml than with something like Rust. (It's worth noting that OCaml now has its own 'rustified' development OxCaml.) The main practical difference is that Haskell is idiomatically based on lazy evaluation, whereas OCaml is strict. This makes corecursive patterns a bit easier to express in Haskell, but OCaml and OxCaml are friendlier wrt. performance concerns.

Just as Haskell with Linear Haskell.

That's a fair question. It's part ecosystem, part tooling. The ghcup, stack, cabal mishmash is closer to maven than a tool with a modern streamlined UI like cargo.

And yes, Haskell is significantly more expressive than Rust--at the cost of performance.


Every time I see a post about the TI calculators, I think about how much I dislike their interface, and it's all because I started out on a Casio.


I had a Casio that was multi color, because I thought it was cooler. Display was nice, functionality sucked.


I had a Casio as well because, IIRC, it was the only thing the shop had. Eventually I had to also get a TI because it allowed using imaginary numbers in a matrix operation. Not that that was used in more than one course after all. But I grew to like it and even had an emulator for a long time on my first smart phone.

But yeah, Casio was definitely more friendly and polished in UI, but dumber. You could only use "wizard" type things and pseudo gui clickies while the ti was crude and text-heavy but let you enter just about anything anywhere and seemed more symbol and language oriented. Which one was nicer in use? I guess it would depend on how much of that language you could memorize. Or browse a cheat sheet for.


I had a Casio because it was $10 cheaper than the TI. Man I was jealous of the "rich" kids.


It's usually a small amount of waste, and handling gas is very different from distillate.

You'd need to either liquify that gas or collect it to a pipeline in order to make it useful. I remember reading that modern refineries make use of the gases instead of flaring them though I'm not sure how.


If your mind goes to TLS when you read crypto, you surely do live under a rock ... in bliss.


That is understandable, but the issue is the sudden drop in quality and the silent surge in token usage.

It also seems like the warning should be in channel and not on X. If I wanted to find out how broken things are on X, I'd be a Grok user.


That's what I've done for years.

Long pressing is much more pleasant.

I wish Apple would give us a hint rather than requiring us to chance upon this recommendation on HN.


That’s a nice use for AI - pop up hints when it sees you using the long way a few times.

The problem is Apple’s hints keep popping up even after you say no thanks or it’s fine.


These are the creatures we kill with poison and carry experiments on.


Those mice have a sculpture as well[0].

Nobody likes experimenting on animals, but it is use mice or orphans in third world countries. In silico and computational models are just not a good enough analogue for the human body.

[0] https://en.wikipedia.org/wiki/Monument_to_the_laboratory_mou...


Well it's good to be honest, and so I commend you on that.

So the hierarchy is

- our kids

- "third-world orphans"

- other species

For what it's worth, I'm not denying the benefit we obtain by testing on animals, nor am I suggesting that we live surrounded by rodents that we know to be vectors for multiple diseases that would affect us.

The comment above was merely an observation on the value of life and how little attention we pay to it.

We subject sentient beings to untold amounts of horror every day, and we are completely destroying the balance of life on earth with a system that is entirely devoted to serving humans--individual humans, not humanity.

The statue is not the point. The point is what this little creature did and how we might learn to show mercy and respect to our fellow sentient beings.


Correct. These are the creatures that will ruin your home/barn if infested with them.

Source: recently finished getting rid of a rat infestation in my barn. they also reproduce at a crazy rate. Some poison + getting two barn cats = problem solved.


Rick Roderick on Habermas.

The series "Self Under Siege" is one of my favorite things on YouTube. Highly recommend watching all 8 in order.

https://youtu.be/aXkmmfaZhEg


For the benefit of those like me who haven't heard of Roderick, some further digging leads to this: https://rickroderick.org/max-roderick/

Major, major rabbit hole warning. You think you're about to read something about a philosophy professor, and what you get is an Alice Munro/Larry McMurtry mashup. His son seems to be a pretty amazing writer in his own right.


+1 These are incredible lectures and there's another series from Rick Roderick on the history of western philosophy that I also love: https://youtube.com/playlist?list=PLxPmwaGMOAvsZp9vavFkyxYFZ...


Stealing this brilliant idea. Thank you for sharing!


I wish I could say I came up with it, but it's just a small variation on something I saw here on HN!


For big tasks you can run the plan.md’s TODOs through 5.2 pro and tell it to write out a prompt for xyz model. It’ll usually greatly expand the input. Presumably it knows all the tricks that’ve been written for prompting various models.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: