[Haskell-cafe] Issue 60 :: Haskell Weekly

Taylor Fausak taylor at fausak.me
Thu Jun 22 15:38:07 UTC 2017

 \   Haskell Weekly
\/\/ 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

## 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

  > 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 ##

- An alternate definition of Haskell's Functor type class

- Configurable data types

- Generic unification

- The linearity monad

- A terminal interface for Tetris

More information about the Haskell-Cafe mailing list