Hacker Newsnew | past | comments | ask | show | jobs | submit | more solomonb's commentslogin

I see a lot of critical comments on here.

The blog post is an exploration of an alternative way to structure code in Haskell.

Why is the bar such that Haskell blog posts have to either demonstrate something clearly better then the status quo or that they need to explain the fundamentals of the language?


The audience is going to meet the article where they're at.

It's fine for, say, a blog post aimed at Haskellers to assume Haskell knowledge, but when posted on a board largely consisting of people without Haskell knowledge, it's natural that you're going to get at least a few people saying, "hey, I don't understand this".

But I'll be honest - I'm familiar with Haskell and the ML module system and the underlying concept (that typeclasses and modules are roughly equivalent in some sense), but I'm unfamiliar with Backpack so I still struggled to follow it a little. The target audience is an extremely narrow niche. So I think it's just somewhat poorly written; it doesn't feel like the author really had an audience in mind, other than themselves. There's probably ways of writing this - without spending too much time regurgitating the basics - that would be more palatable to more people.


> The audience is going to meet the article where they're at.

I hear you on this point but anyone can post anything on this forum. The burden should not be on the author to write a post that aligns with whatever forum their blog might get posted onto.


The author is free to ignore any and all complaints they consider unfounded. It’s not even like the author is recieving any complaints personally; they have to come here to see any. And if they come here, they will get to read the viewpoint visible from here.


Bingo- post to hn ... you'll get per review. Thats the deal.


Death? cryOfUprising? Why be weird? Is the article supposed to communicate something or is it an entry in the author's personal diary that got out? Sheesh. ... I know language profs try hard to teach people to write. It wouldn't kill to listen.


Maybe if the post title used the word "Haskell" it wouldn't attract the opinions of people not interested in Haskell? Pretty obvious stuff.


It contains "type class".


Those are not exclusive to Haskell.

Personally, just from reading the title, I was hoping for an article about the design of type systems in programming languages in general.


... which won't mean much to someone who doesn't know Haskell. The kind of person who might click on this link thinking "types and classes are the same thing, what does he mean 'type class'".

(don't @ me with your pedantic bullshit about how types and classes are different, I don't care).


Sadly I don't think this perspective will ever be accepted on HN.

Commercial galleries and the art school pipeline are awful in so many ways, but one thing that many people fail to understand is that art in its best light is an ongoing conversation.

Yes you can be incredibly skilled and build an aesthetically beautiful hand made work of art without ever being part of the larger art world. And as a viewer, you can appreciate that art and buy it and cherish it. This is good, great in fact.

But to say that is all that art should be is sort of missing the forest for the trees or whatever. We have this thousands of years old conversation going about form, color, concept, story, material, humanity, etc and when its working correctly the art world cultivates and encourages that conversation.

We can absolutely have this conversation without financializing art to the extreme as has been done the past 10 years, but lets not throw the baby out with the bathwater.


> - it’s way easier and cheaper to launder money through cryptocurrency casinos than art auctions

Sure art sales can be used to launder money, but that can't be the majority of sales. Doesn't laundering rely on being masked by a larger legitimate cash flow?

I think a much more significant portion of the art market is people speculating on prices and people collecting to look cool. Both of which are highly sensitive to changes in mood and sentiment as described in the section of the article talking about Beth Rudin DeWoody .


They are only getting deprecated this fast because the cost of training is in some sense sustainable. Once it is not, then they will no longer be deprecated so fast.


Is it though? Its only sustainable to the extent that there is easy access to funding on favourable terms...


I just checked for my copy of this and its missing. : (

Great book. I like seeing how expansive the original cyberpunk was. I love William Gibson (and Bladerunner) but modern cyberpunk is but a hollow shell of Gibson's aesthetic.


Can you go into more detail about why you think it is a hollow shell?


Cyberpunk in popular media tends to focus on and glamorize the aesthetic of early gibson novels without having anything interesting to say or explore.


This is why I prefer Agda, where everything comes down to pattern matching.


You can absolutely use pattern matching in Lean instead of tactics, if you prefer to write the proof that is closer to "what is going on under the hood"


yeah i didn't mean to imply you cannot do that, but tactics seem to be highly encouraged.

I'm actually a big fan of Lean, I just like it more as a programming language for writing programs with dependent types then as a proof checker.


Not if you need to perform two /Monadic/ operations as the commenter stated explicitly.


Every monad is also an applicative and liftA2 does/is the same thing as liftM2. The only reason they both exist was due to Monad being popularized in Haskell earlier than Applicative and thus not having it as a superclass until the Functor-Applicative-Monad Proposal in Haskell 2014. It was obviously correct, but a major breaking change that also got pork barreled a bit and so took a while to land.


Yes you're absolutely right. I had a bit of a brain fart moment here. If they were Applicative operations then you would not be able to use `liftM2`, not the other way around.


This is my fear when I think about doing actual in a team using a functional language. That there's an imbalance in understanding between participants in a team making all discussions about problem x into the pattern matchning problem y. Like "is this liftM2 or liftA2?"

I've only had a couple of months of experience working with scala before the team switched to Java. The reasons were many but one of them was that the external consultant that was most knowledgeable in "thinking with functions" was kind of a dick. Making onboarding into a horror show of "go look up yt video x before I can talk about this functionality" with a condescending tone. So within a month he was let go and then no one in the remaining team really had the courage to keep debe it further. Some thought that they maybe could maintain the current functionality but the solution was only like half complete. (in the consultant mind it was complete because it was so generic you only needed to add a couple of lines in the right place to implement each coming feature)

That said, I would love to work in a hardcore Haskell project with a real team, one with a couple of other "regular" coders that just help each other out when solving the actual problems at hand.


Well, I can't speak to your experience but in the case of liftM2 vs liftA2 I have never even seen liftM2 get used. Its more of a historical oddity that it is available.


I use it the same way but cursor is constantly insisting on making code changes. Is there a trick to get it to introspect on the codebase without wanting to modify it?


I say something like "without making any code changes right now, investigate blah blah blah" and if I want more than just info "and propose a direction that I can look at", or sometimes give it a file to write a proposal into.


In Cursor, there is an 'ask' mode that isn't as over-eager to make edits as the default agent mode.


In Zed you can toggle between read-only and write modes at any point when using the agent. You can also create custom modes that allow the use of specific tools, editing only specific files, etc. Does cursor have a similar feature?


> When something goes wrong, I don’t hand-patch the generated code. I don’t argue with claude. Instead, I adjust the plan, the prompts, or the agent mix so the next run is correct by construction.

I don't think "correct by construction" means what OP thinks it means.


Also, aren't they just rolling the dice here? Can you turn down the temperature via Claude Code?


I'm having trouble reading zig code, so I'm not sure how much overlap there is but I have done some work with mealy and moore encoded as co-algebras in haskell:

https://blog.cofree.coffee/2025-03-05-chat-bots-revisited/ https://github.com/cofree-coffee/cofree-bot

Also using the lens library to encode moore machines as polynomial functors: https://blog.cofree.coffee/2024-07-02-lensy-moore/


Thanks for your reply, I will try to understand your code carefully, which may take some time.

I have a raw haskell prototype of polystate here, maybe it will help you. https://github.com/sdzx-1/typed-gui/blob/main/examples/todoL...


Right on, I'll take a look at your haskell code this week.


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

Search: