[Haskell-cafe] Issue 61 :: Haskell Weekly

Taylor Fausak taylor at fausak.me
Thu Jun 29 15:21:22 UTC 2017

 \   Haskell Weekly
\/\/ Issue 61

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

- Haxl: Making concurrency unreasonably easy
  > Haxl is a big hammer for doing I/O concurrently, testing I/O, and modularity (caching & memoization).

- Introduction to Brick
  > I'm going to give a short introduction to Brick, a Haskell library for building terminal user interfaces. So far I've used brick to implement Conway's Game of Life and a Tetris clone. I'll explain the basics, walk through an example snake application, and then explain some more complicated scenarios.

- Simplexhc: An STG to LLVM compiler
  > STG's lowering to C-- and the decisions taken when implementing it were based in the '90s. That's not to say that the GHC team hasn't done an awesome job keeping it up to date; they have! But, I wonder what a complete rewrite of this lowering would look like. Hence, I'm trying to experiment in this space and see what happens.

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

- Threading responsibly: `forkIO` considered harmful
  > In this post I want to argue that threads are also a resource, in the sense that they require management after we've created them. A stray thread will consume memory, CPU cycles, and really whatever resource it might need to execute.

- The `Has` type class pattern
  > The value in this approach is that I don't have to think about what functions to call to collect the images: it's always `images`. In the prior example, I had to think about the how to collect the images each time, and it took brain power better spent elsewhere.

- A tale of two brackets
  > I hope the primary thing you take away from it is a deeper understanding of how monad transformer stacks interact with operations in the base monad, and how monad-control works in general.

- `RecordWildCards` and binary parsing
  > `RecordWildCards` is a GHC extension that makes working with Haskell records more convenient. The extension has been blogged about in a few places already, so this post intends to provide a different motivating example: binary parsing.

- On naming things: Library design
  > I've written a few libraries now and have tried out different naming and exporting conventions. I've developed a bit of a feel for how it is to write and use them, and I'm going to put out my personal preferences and opinions on library design here.

- Haskell Bits #6: A guide to mutable references
  > There are quite a few ways to store mutable data in Haskell. Let's talk about some of them! Specifically, we will focus on mutable containers that store a single value that can be modified by one or more threads at any given time. I'm not going to go into a ton of detail here --- I just want to give an overview.

- Interfaces and type classes: Number APIs in C# and Haskell
  > In C# sometimes I sorely miss something like an `INumber<T>` interface with methods add, subtract, multiply, and others. The lack of this means it is cumbersome to write generic code on numbers.

## Package of the week ##

This week's package of the week is data-has, a library that provides a
simple extensible product system.

## In brief ##

- Announcing haskus-system 0.7

- Defeating evil with data structures

- stack2nix first public release

- Streaming combinators and extracting flat parallelism

- Typing Nix

- When competing with C, fudge the benchmark

## Events ##

- Berlin Functional Programming Group's first meeting
  July 1

- Haskell.SG's July meetup
  July 5

More information about the Haskell-Cafe mailing list