Issue 350 2023-01-12
Subscribe now! We'll never send you spam. You can also follow us on Twitter or with our feed. Read more issues in the archives.
Welcome to another issue of Haskell Weekly! Haskell is a safe, purely functional programming language with a fast, concurrent runtime. This is a weekly summary of what’s going on in its community.
A dancing space leak by Tom Sydney Kerckhove
This is the story of a space leak in the Social Dance Today server and how we fixed it.
Deriving Simple Recursive Functions by Jack Kelly
I used to teach Haskell to first-year university students, and many of them struggled to write their first recursive functions.
Haskell at work by Marco Perone
In this post I’d like to summarise what Tweag is doing in this space. In particular, there are three projects we are working on to help make Haskell adoption and usage a little bit simpler and more straightforward.
Linking Smaller Haskell Binaries by Brandon Simmons
Haskell binaries can get quite large (think ~100MB), especially for projects with many transitive dependencies. Here are two strategies that can help at link time, the latter being more experimental.
Updating to announce a whole bunch of new features in the latest redeploy, with a few yet to come.
One Step Beyond by Jean-Hugues de Raigniac
The problem is not “should I use an effect library?” but “how do I compare the pros and cons of these libraries to find the one fitting my project and my team skills?”
Parallel streaming in Haskell: Part 2 - Optimized parallel aggregations by Channable
This is part 2 in our series about the parallel streaming evaluator that we use at Channable, where we use Haskell with the Conduit library to produce both result values and parallel work units in a single stream.
Property-based testing stateful systems: a tutorial by Stevan Andjelkovic
Given this it’s perhaps a bit surprising that there are relatively few resources about applying PBT to stateful systems. This repository is an attempt to close that gap and try to make PBT stateful systems more common.
Make an impact on the developer ecosystem (ad)
Are you using the same platforms and apps? What have you stopped using and what are your pain points? Take part in the most complete survey Developer Nation has ever created, shape the key trends among developers for 2023 and win amazing prizes such as laptops, courses, gifts cards and many more!
Trying to hire a Haskell developer? You should advertise with us!
Chat GPT and Functional Programming by Monday Morning Haskell
Last week I explored what Chat GPT has to say about monads. But it’s interesting to go beyond this single area and see what its thoughts are about functional programming (FP) in general, and how different languages fit within this paradigm.
Don’t edit dependency bounds manually, with this CI setup by Joachim Breitner
The last point made me write a new tool,
cabal-plan-bounds, that takes multiple of Cabal build plans (
plan.json), and changes the dependency version ranges in the
.cabalfile to reflect the versions that are actually used on CI.
GHC+DH Weekly Update #3, 2023-01-11 by Vladislav Zavialov
This week I continued to work on @k-binders in type declarations, and I focused on two issues in particular: associated types and kind inference.
GHC WebAssembly Weekly Update, 2023-01-11 by Cheng Shao
Haskell Foundation DevOps Weekly Update, 2023-01-11 by Bryan Richter
I just got back from the first Helsinki Haskell Meetup that has been held in over three years, which pleases me as an excuse for my tardiness!
Scrap your boilerplate, with recursive continuations
The core trick I want to introduce is simple: Adding some knot-tying to continuations lets us add a
recurseoperator which is really useful when writing generic traversals.
Show & tell
Copilot version 3.13 by Ivan Perez
Copilot is a stream-based DSL for writing and monitoring embedded C programs, with an emphasis on correctness and hard realtime requirements.
ldtk-types by Sandy Maguire
I decided I wanted to use the fantastic LDtk editor to design levels for my entry, but was horrified to see that there didn’t already exist bindings.
monadic-bang by Jakob Brünker
A plugin for GHC which takes expressions prefixed with a ! and effectively takes them out of their monadic context, by creating bind statements in the do-block surrounding the expression.