Haskell Weekly


Issue 214 2020-06-04

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.


  • Adventures in Refactoring by Sam Tay

    Spelunking into stale code two years later.

  • Building a reactive calculator in Haskell (3/5) by Keera Studios

    First, we will lay out the elements in a web page. Second, we will style them to look like a calculator. Finally, we will make those elements accessible from the rest of the application as reactive values.

  • Generating documentation from API types by Holmusk

    The latest project I have worked on, servant-docs-simple allowed me to work with exciting things relating to type-level programming.

  • HLint --cross was accidentally quadratic by Neil Mitchell

    One of my favourite blogs is Accidentally Quadratic, so when the Haskell linter HLint suffered such a fate, I felt duty bound to write it up.

  • On Marketing Haskell by Stephen Diehl

    The singular truth remains that unless Haskell sees more industrial use then there can never be any serious progress.

  • Quick Memory Trick by Matt Parsons

    Is there a way to get the convenience of RecordWildCards and the safety of knowing that modifying the type will cause a compile error?

  • Reanimate: a tutorial on making programmatic animations by William Yao

    Today we’re going to see how to make the animation from the last post about my experience using Reanimate.

  • Responsive IDEs by Zubin Duggal

    I will discuss some of the latest developments with respect to the ghcide architecture and how we’ve been working to increase its responsiveness.

  • Setting up a Haskell development environment with Nix by Romain Viallard

    For this first entry, we’ll explore how to quickly setup a reliable environment to hack on our Haskell projects using the Nix language and its Nixpkgs infrastructure.

  • Using Template Haskell to generate boilerplate by Jonathan Dowland

    Here’s a practical example of applying Template Haskell to reduce the amount of boilerplate code that is otherwise required.


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

In brief

  • The abstract nature of the Cardano consensus layer by Edsko de Vries

    This new series of technical posts by IOHK’s engineers considers the choices being made.

  • CircleCI and Haskell by Nate May

    I’ve tried several different approaches to using CircleCI for Haskell projects and it’s taken me a while to find a solution that works well.

  • Cleaning up threads in Haskell by Chris Wendt

    If you don’t keep track of your threads and kill them when the main thread receives an exception, you can accidentally hold on to resources that should be released.

  • CodeWorld as a Haskell Playground: Call for Package Requests by Chris Smith

    To further this goal, I am formalizing the list of Haskell packages that I can guarantee to be available in the environment.

  • Competitive programming in Haskell: permutations by Brent Yorgey

    This problem presents us with a substitution cipher, and asks how many times we would have to iterate the encoding process in order to turn a given message into a given encryption.

  • Function Domain by Sam A. Horvath-Hunt

    Functional programming is, funnily enough, all about functions. This post is all about the domains of our functions.

  • Monthly Hask Anything (June 2020)

    This is your opportunity to ask any questions you feel don’t deserve their own threads, no matter how small or simple they might be!

  • RecordDotSyntax in Haskell by Riccardo Odone

    Luckily, the RecordDotSyntax proposal has been accepted. We just need to hang tight while it gets implemented.

  • Refactored Game Play! by Monday Morning Haskell

    We created a new class EnvironmentMonad to combine the steps these games have in common. This week, we’ll see a full implementation of that class.

  • A short exploration of GHC’s instance resolution hiding mistakes from the type checker by Dominic Orchard

    I thought this was an interesting little example of how type class instance resolution can sometimes trip you up in Haskell, and how to uncover what is going on.

  • Simulated annealing by Oleg Grenrus

    In this post I will show my results with three problems, ramp and finnish randonneur (travelling salesman) already presented in evolving non-determinism post.

  • The story with data-default by Mark Karpov

    Using data-default or data-default-class in Haskell is always a mistake. Why?

  • Trusting toList by Colin Woodbury

    Similar to my post on Measuring Haskell Containers Sizes, this made me wonder if Foldable.toList is “safe” (performance wise) in all cases, or if we should trust the variants exported by each module.

  • YourFirstGame with Haskell, Godot, and godot-haskell by Donovan

    This converts the YourFirstGame Godot tutorial to Haskell using godot-haskell library.

Show & tell

  • ghcide version 0.2.0 by Moritz Kiefer

    Multi-component support and support for GHC 8.10.

  • Shwifty

    Generate Swift types from Haskell types.

Call for participation