Haskell Weekly

Newsletter

Issue 406 2024-02-08

Subscribe now! We'll never send you spam. You can also follow 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.

Featured

  • A QuickCheck Tutorial: Generators by Stack Builders

    Learn how to use QuickCheck’s combinators to create simple generators of random values. From reversing lists to rolling dice and crafting generators for your data types, this tutorial will enhance your programming skills and help you get started with property-based testing in Haskell. This popular post was originally written in 2015 and updated in January 2024 to reflect QuickCheck library changes up to the most recent version (2.14.3) as well as other minor fixes.

  • Bending Warp by Magnus Therning

    In the past I’ve noticed that Warp both writes to stdout at times and produces some default HTTP responses, but I’ve never bothered taking the time to look up what possibilities it offers to changes this behaviour. I’ve also always thought that I ought to find out how Warp handles signals.

  • Exploring Verse, Haskell, Language Design and Teaching (with Simon Peyton Jones) by Developer Voices

    We discuss how programming languages are made, focusing on a big design idea from both Haskell and Verse: building a large language from a small, tightly designed core. Then we move into Simon’s current work exploring Functional Logic Programming, the big new idea that underpins Verse. It’s an idea that blends the fundamentals FP with the core ideas of logic languages like Prolog in an entirely new way. Not even Simon knows exactly where the idea will lead, but it’s a fascinating idea that could potentially bring constraint-solving and deduction right into the heart of modern software.

  • Haskell in Production: TextQL’s Ontology Service by Mark Hay

    The ontology is a knowledge graph describing all of a TextQL customer’s key business concepts and how they map onto the user’s data warehouse. Think of it as a mix of an ERD diagram and a semantic layer UI where the data team can map business concepts onto the ontology’s core set of data types: Nouns, links, measures, dimensions, and metrics.

  • Haskell’s problem with exploding call stacks by Channable

    By default, Haskell does not provide call stacks when errors occur. To get call stacks, one can add the HasCallStack constraint to any function to request it. However, did you know that doing this carelessly can cause memory usage to explode? We didn’t either!

  • How I learned Haskell in just 15 years by Evan Silberman

    Fifteen years or so ago, for reasons I can no longer remotely recall, I started learning Haskell. Now, I have finally written a useful program in Haskell, and I am pretty sure I can do it again, if I ever need another computer program.

  • Linear Lenses in Haskell by Bartosz Milewski

    Haskell has essentially solved the concurrency and parallelism problems by channeling mutation to dedicated monads, but resource management has always been part of the awkward squad. The main advantage of linear types in Haskell, other than dealing with external resources, is to allow safe mutation and non-GC memory management. This could potentially lead to substantial performance gains.

  • Persistent Models are Views by Matt von Hagen (Parsons)

    The Haskell persistent library provides a QuasiQuoter syntax for defining a Haskell datatype, along with code to convert it into a database table. However, there’s a bit of a subtlety here.

  • Statically and dynamically typed scripts by Mark Seemann

    I was recently following a course in mathematical analysis and probability for computer scientists. One assignment asked to analyze a small CSV file with data collected in a student survey. The course contained a mix of pure maths and practical application, and the official programming language to be used was Python. It was understood that one was to do the work in Python, but it wasn’t an explicit requirement, and I was so tired that I didn’t have the energy for it. I can get by in Python, but it’s not a language I’m actually comfortable with. For small experiments, ad-hoc scripting, etc. I reach for Haskell, so that’s what I did.

Jobs

  • Haskell Software Engineer (Utrecht, NL) (ad)

    We are looking for 2 talented Haskell Software Engineers! In this position, you will be responsible for the design, development, and maintenance of new and old features in our application. You will also be working on scaling our Haskell applications to the next level, where we can handle another order of magnitude increase in throughput while keeping our app fast and responsive. We value the readability, maintainability, and testability of our codebase. Do you?

Trying to hire a Haskell developer? You should advertise with us!

In brief

Show & tell

Call for participation