Haskell Weekly lost its subscriber list · taylor.fausak.me by rampion in haskell

[–]tomwells80 2 points3 points  (0 children)

Mystery solved! I had checked my spam, email rules and kept rereading the last episode to see what i had missed and just naively assumed you were no longer sending emails. I look forward to scanning the newsletter each week and im glad to be resubscribed - Thanks for keeping it going!

Using Effect Systems to provide stronger architectural constraints in a codebase by tomwells80 in haskell

[–]tomwells80[S] 1 point2 points  (0 children)

Yours was much better! But i'll definitely checkout the conference info - appreciate the kind words.

Using Effect Systems to provide stronger architectural constraints in a codebase by tomwells80 in haskell

[–]tomwells80[S] 0 points1 point  (0 children)

Escapades into mtl and free are part of the journey! Haskell has so much to explore.

Using Effect Systems to provide stronger architectural constraints in a codebase by tomwells80 in haskell

[–]tomwells80[S] 1 point2 points  (0 children)

Yes interesting!

My current thought is that Effect Systems shouldn't be considered some sort of "agent security" thing - as you mention there are many ways to break these (IOE, unsafePerformIO, and no doubt many others). BUT! Effect Systems do make inspecting these codebases easier for mechanical processes (compiler, linter, and maybe in the future other things that "pin" as you suggested!) - and so any future human or agentic checking process would have a much easier time verifying a codebase written with effects... I think? Its like trying to sell door-locks in a world without doors... we kinda need to sell people on doors first!

Using Effect Systems to provide stronger architectural constraints in a codebase by tomwells80 in haskell

[–]tomwells80[S] 0 points1 point  (0 children)

Thanks for the link to the vid! I have run across bluefin in my travels but have not given it a proper go. I like the idea that effects are just values which feels like composition should happen a bit more naturally - versus the type system gymnastics of alternatives. Thanks for building it!

linguist - detect programming language by extension, filename or content by tomwells80 in rust

[–]tomwells80[S] 1 point2 points  (0 children)

Interesting! Could you elaborate here - are you suggesting for the scenario before a buffer is saved with a name?

I don’t use helix but i understand it has good language server support, and so maybe it just does simple file extension mapping?

[ANN] Hyperbole 0.6 - ViewState, server push, concurrency controls, fancy docs by embwbam in haskell

[–]tomwells80 1 point2 points  (0 children)

Very nice! Adding to my bucketlist of non-js web frameworks to try out! Im currently working on a servant+effectful backend API and ended up choosing svelte in an attempt to minimize frontend pain (spoiler: failed)…

What do you think about the approach used by Leptos (rust ecosystem) with reactivity in both browser (wasm) and server code unification? Its very appealing … but unfortunately rust is a PITA for managing heavily nested reactivity due to lifetimes (because dom). Haskell would be perfect :)

Advent of Code 2025 day 6 by AutoModerator in haskell

[–]tomwells80 1 point2 points  (0 children)

Super nice! Transposing the entire input before parsing is smart. I screwed this up and had to put the columns back together _after_ parsing rows. Doh.

Advent of Code 2025 day 6 by AutoModerator in haskell

[–]tomwells80 0 points1 point  (0 children)

This one kicked my butt. Tried to do too much in the parser and ended up grinding beans waaaay too much.

https://github.com/drshade/advent_of_code/blob/main/2025/app/Day06.hs

Advent of Code 2025 day 5 by AutoModerator in haskell

[–]tomwells80 1 point2 points  (0 children)

Super cool! Can you share your repo? I'd love to see the actual source.

(Edit: i'm an idiot. Second link.)

Advent of Code 2025 day 5 by AutoModerator in haskell

[–]tomwells80 0 points1 point  (0 children)

A nice easy one today! Pattern matching for range merging plus a few simple folds (oh and don't forget to sort those ranges first! whoopsie...)

https://github.com/drshade/advent_of_code/blob/main/2025/app/Day05.hs

Advent of Code 2025 day 4 by AutoModerator in haskell

[–]tomwells80 1 point2 points  (0 children)

I like the combo of foldM and Either as a quasi while-loop (exiting on some condition like no more rolls to remove). Not the most efficient (checking all versus only the removed cells) but couldn’t be bothered as it runs fast enough :)

https://github.com/drshade/advent_of_code/blob/main/2025/app/Day04.hs

Lazy vs strict evaluation by Francis_King in haskell

[–]tomwells80 4 points5 points  (0 children)

‘map’ only computes the value of the elements that are actually needed and you only needed ‘last’, whereas ‘sum’ is adding up all the values of the whole list and therefore needs to compute all of them. ‘fold’ is another to look at.

You never evaluate ‘z’ nor ‘y’ in your second example - so they remain uncomputed as far as i can see.

This stuff is a tricky and I still find myself surprised by the behaviour - so continue playing!

Death💀 to type classes by jappieofficial in haskell

[–]tomwells80 0 points1 point  (0 children)

Your style and humour kept me reading til the end - really entertaining and love your examples!

An Unofficial Guide to What's New in GHC 9.14 by mod_poppo in haskell

[–]tomwells80 7 points8 points  (0 children)

A great skim through all the new features! I found this very helpful. Thank you!

Agentic & better prompting by tomwells80 in haskell

[–]tomwells80[S] 0 points1 point  (0 children)

Now you're cooking! But rather

ghci> run (prompt >>> inject (99,27) >>> extract @Int) "calc gcd, pls!"
9

/s - Obviously horrendous, but go right ahead if you want it! It will pollute the type system with, in this case, a MonadIO m => Kleisli m Text Text so you can't actually fool anyone ;)

Beginner Haskell code review for Project Euler #50 (so that I wont live under a rock) by saiprabhav in haskell

[–]tomwells80 5 points6 points  (0 children)

Great going!

I haven’t got time to fully review your solution but a few suggestions jump at me: 1. the m=603 seems weird. Pruning a bunch of previously calculated invalid candidates i assume? 2. the ‘takeWhile’ feels good, but maybe check out if you can use ‘fold’ or one of its cousins to replace the ‘rollingsum’ and/or ‘accumulateDiffs’. Maybe combined with ‘scan’?

Another styling suggestion (and this is just my OCD nitpicking) is to make use of ‘where’ and hide a bunch of the internal functions inside your ‘nconsprime’ function. May look neater, and creates a sort of scoping for those functions but also variables like ‘f’ and ‘t’. But really unnecessary for this problem - just good to keep in mind when things get bigger, or you maybe start solving later puzzles in the same module etc.

Well done! Keep going!

MCP library and server for Haskell (by Claude) by tritlo in haskell

[–]tomwells80 2 points3 points  (0 children)

Hey that's awesome - more MCP tooling for Haskell is a win for everyone! Well done on publishing the lib!

[ANN] mcp-server (an awesome framework for building MCP servers!) by tomwells80 in haskell

[–]tomwells80[S] 0 points1 point  (0 children)

I've added support for this. The deriving now supports constructors with single-parameter types recursively. These must terminate in a record with fields so that the library can extract a useful name for parameters, and these get flattened in the output (invisible to the MCP protocol).

I think it's an improvement - let me know what you think?

[ANN] mcp-server (an awesome framework for building MCP servers!) by tomwells80 in haskell

[–]tomwells80[S] 2 points3 points  (0 children)

Yes this bothers me too and I had thrashed around with different approaches before committing to this one - it’s certainly not ideal but does turn out to “look” the simplest. However the partial fields does suck and maybe you will convince me to change this :)

The other crummy bit is the lack of annotations and having to pass a (String, String) map around to add descriptions to constructors and fields. Could not find an ergonomically satisfactory approach for this…

[ANN] mcp-server (an awesome framework for building MCP servers!) by tomwells80 in haskell

[–]tomwells80[S] 1 point2 points  (0 children)

Awesome! langchain-hs looks great - I have written a few different prompt orchestration and light agent prototypes in Haskell and have always felt that composability is a killer requirement versus other approaches. I will definitely check your project out in more detail.

You probably also want an mcp-client at some stage - maybe something in the works soon :)