Issue 127

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

  • Komposition: The video editor built for screencasters (in Haskell!)

    Komposition is the video editor built for screencasters. It lets you focus on producing and publishing quality content, instead of spending all of your time in complicated video editors. Komposition automatically detects scenes in screen capture video, automatically detects sentences in voice-over audio recordings, and features a high-productivity editing workflow based on keyboard navigation.

  • Testing Our Ruby and Haskell Implementations Side-By-Side

    After almost ten years of continuous development, Mpowered’s calculation engine has become a maintenance and innovation bottleneck. We decided to extract and replace the Empowerment component with a new solution built in Haskell. This posts describes how we are testing during the transition.

  • Capability: The ReaderT pattern without boilerplate

    In this post, we’ll argue why capabilities are important, why you should use them, and tell you about what it took to design a library of capabilities with good ergonomics. It turns out that a brand new language extension that shipped with GHC 8.6, -XDerivingVia, has a crucial role in this story.

  • Haskell in production: A GHC upgrade success story

    Version upgrade nightmares are so common that they have become almost expected. Update the compiler one patch level, or a library version, and the work spirals into a much larger project. This is a story of going forward two versions in GHC, 8.0.2 to 8.4.3, and updating our libraries at the same time.

  • Introducing Haskell to a company

    This post makes the assumption that the reader understands why they themselves would want to use Haskell and what its benefits are, so instead focuses on how we’ve made it a successful part of our own company’s development culture.

  • Keep your types small and your bugs smaller

    The more precisely our types describe our program, the fewer ways we have to go wrong. Ideally, we can provide a correct output for every input, and we use a type that tightly describes the properties of possible outputs.

  • Metric a Haskell application

    In one of my recent posts, I’ve mentioned gathering metrics for my Haskell application. Some people asked me about my setup, so I will try to describe how I configured and structured my application.

  • Rewrite rules and a specific fold: Use optimization techniques from GHC.Base

    Alga, a functional implementation of graphs, defines a foldable structure with a fold (named foldg) specialized for the graph data. Can we use the same tricks than GHC.Base to optimize compositions of foldg with fmap? Spoiler: Yes, and we can do it without any pain!

  • Announcing Pure-C: A C backend for PureScript

    Pure-C is an alternative backend for PureScript, a strongly typed, purely functional programming language that compiles down to native code via the Clang compiler toolchain.

  • Haskell study plan: An opinionated list of resources for learning Haskell

    This guide is an opinionated list of resources for learning Haskell. It is aimed at more experienced programmers that would like a denser Haskell tutorial.

Jobs

In brief

Package of the week

This week’s package of the week is Hakyll, a library for generating static sites. It’s mostly aimed at small-to-medium sites and personal blogs.

Call for participation

Looking to participate in the fifth annual Hacktoberfest? Check out some of these issues with the “Hacktoberfest” label from Haskell repositories on GitHub!

Events