Issue 60

Welcome to another issue of Haskell Weekly! Haskell is a purely functional programming language that focuses on robustness, concision, and correctness. This is a weekly summary of what’s going on in its community.

Featured

  • Understanding ResourceT

    Instead of just teaching you how to use the library, this post will demonstrate why you need it and how it works internally, to help you avoid some of the potential pitfalls of the library.

  • Announcing Weeder: dead export detection

    Most projects accumulate code over time. To combat that, I’ve written Weeder which detects unused Haskell exports, allowing dead code to be removed (pulling up the weeds).

  • Dhall is now a template engine

    Now you can use Dhall as a template engine with the newly released dhall-text library which provides a dhall-to-text executable for templating text.

  • Front Row is hiring a senior backend Haskell engineer (ad)

    Come change how 6.5+ million K-12 US students learn Math, Language Arts, Social Studies and more. Use data, advanced type systems, great product design and deep pedagogy to change lives.

  • Testing PostgreSQL for fun

    In this post I’ll show how to make database programming fun by using packages that make testing easy. I’ll walk through a example of building a durable queue backed with PostgreSQL.

  • Exceptional Servant handling

    There are various good reasons why you might want to strip ExceptT from your Servant handlers. There are various good reasons why you wouldn’t want to do that. I’m in the first camp — I don’t want ExceptT over IO.

  • On competing with C using Haskell

    By writing very straight-forward pure, functional Haskell code without any special trickery, you can get performance equivalent to what you’d get by calling out to a C function, which is also in the same order of magnitude as the same algorithm implemented in a program completely written in C.

  • How well does it work? Profiling in Haskell

    This is where benchmarking and profiling come in. We’re going to take a specific problem and learn how we can use some Haskell tools to zero in on the problem point.

  • The chain in blockchain

    This post develops a simple blockchain with the goal of understanding the basics of the chain. The most straightforward part of a blockchain is the chain itself, a sequence of blocks.

  • Mezzo: type-safe music composition

    Its novelty is in the fact that it can enforce various rules of music composition statically, that is, at compile-time. This effectively means that if you write “bad” music, your composition will not compile — think of it as a very strict spell-checker for music.

  • Linear types 101 and its relevance to streams

    It creates a resource aware type system, which not only knows types of values but also number of uses; a linearly typed value is guaranteed to only have one reference to it at any time, duplication or ignoring will not compile.

Package of the week

This week’s package of the week is async, a library that allows you to run IO operations asynchronously and wait for their results.

In brief