Haskell Weekly

Newsletter

Issue 290 2021-11-18

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

  • 2021 State of Haskell Survey Results by Taylor Fausak

    The fifth annual State of Haskell Survey closed this week. This post will graph the responses, analyze them, and compare them to previous years.

  • Applying File Changes with fix and GADTs by Dan Fithian

    This post goes into the challenges I encountered implementing incremental file changes, and how I solved them with custom parsers, fix, and GADTs.

  • Haddock: disambiguating types and values by Fraser Tweedale

    When types and data constructors share a name, Haddock, Haskell’s documentation generator, can get confused. In this post I show how to disambiguate types and values in Haddock documentation.

  • Haskell IHP Framework, from a Technical and Business Perspective by Amitai Burstein

    With IHP, I know that we’ll be able to build better solutions for our clients. Having a powerful type system and compiler has already proven to be of the utmost value for the frontend, and I’m happy there’s a viable backend option.

  • Safe sparkle: A resource-safe interface with linear types by Noah Goodman

    In this post, I will discuss some of the more important design choices I made, both as a way to introduce people to the new safe interface for sparkle, and possibly, as a more general guideline for things to consider when designing a library that achieves safe resource management in a linear monad.

  • Textual Representation in Haskell with Witch by Thomas Bach

    As I introduced witch I encountered more cases where I was actually just converting objects from one representation into another one, either by introducing extra functions like petAsString or by using type classes like ToField.

  • WebSockets in Servant

    I struggled to find any instruction about using websockets with Servant. The official docs were fairly comprehensive on many other topics, but a section for websockets is missing.

  • Writing about Haskell is Hard by Anthony Super

    If your first thought upon clicking on a blog post entitled “Writing about Haskell is Hard” was “I bet this guy was writing a very different sort of post, got frustrated, and went back to the drawing board,” congradulations, you’re right!

Jobs

  • Software Engineer at ACI Learning

    We are currently accepting applications for full-stack software professionals to join our small, but talented, multidisciplinary team.

  • Channable is looking for a Haskell team lead (ad)

    Channable is always hiring talented Haskell engineers and is now looking for someone to lead one of our Haskell teams. We’re a fast-growing international scale-up and while you can still benefit from the start-up vibe, working at Channable also means being part of a professional company with an outstanding development team.

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

In brief

  • Competitive programming in Haskell: BFS, part 4 (implementation via STUArray) by Brent Yorgey

    In a previous post, we saw one way to implement our BFS API, but I claimed that it is not fast enough to solve Modulo Solitaire. Today, I want to demonstrate a faster implementation.

  • Divisible and the Monoidal Quartet by Daniel Mlot

    The gist of it is that “Divisible is a contravariant Applicative, and Decidable is a contravariant Alternative” is not a full picture of the relationships between the classes, as there are a few extra connections that aren’t obvious to the naked eye.

  • Dragging Haskell Kicking and Screaming into the Century of the Fruitbat by Sandy Maguire

    Yesterday, the new Haskell CLC decided to remove (/=) from the Eq typeclass. As expected, the community has embraced this change with characteristic grace.

  • Episode 5: Chris Smith by The Haskell Interlude

    Chris Smith is interviewed by Joachim Breitner and Andres Löh. Chris is the author of the CodeWorld teaching tool and discusses why too much curry in the language can make error messages hard to digest and why a self respecting testing library certainly should be used to test itself.

  • Haskell breaking changes by Fumiaki Kinoshita

    This document describes a list of upcoming/proposed changes to Haskell core/de facto libraries.

  • Monad Architecture by Haskell Weekly Podcast

    This week Cameron and Taylor answer our first listener question: How should you structure large applications? We compare ReaderT with MTL along with other approaches.

  • PSA: 9.2.1 AArch64 miscompilation by Moritz Angermann

    The slew of new changes in GHC 9.2.1, including all the work the lead to the lead to subword type info in Cmm to support the C Calling Convention on aarch64-darwin, and subsequently led to subword primops, sadly also led to a set of low level miscompilations on the aarch64 backend.

  • Reinvention of Programming by Péter Diviánszky

    I go back in time when programs were simpler and I reimagine programming from grounds up. Then I come back to the present and work out how to make programming common knowledge like literacy.

Show & tell

  • Dovetail by Phil Freeman

    Dovetail is a general-purpose PureScript interpreter written in Haskell. It has excellent support for interop with Haskell code via PureScript’s foreign function interface, along with a high-level Haskell API for integrating such code.

  • Haskell Language Server version 1.5.0 by Javier Neira

    Time for another HLS release: Pepe Iborra has done an epic work to improve performance, redefining some of the core pieces of HLS.

  • Prune Juice version 0.7 by Dan Fithian

    Since releasing prune-juice, I have received a number of requests asking to apply the unused dependencies directly to the cabal files. It ended up being a lot harder than I expected to implement, and I’m proud to say that it’s finally supported!

Call for participation