Haskell Weekly


Issue 69 2017-08-24

Subscribe now! We'll never send you spam. You can also follow us on Twitter or with our feed.

Welcome to another issue of Haskell Weekly! Haskell is a purely functional programming language that focuses on correctness, productivity, and expressiveness. This is a weekly summary of what’s going on in its community.

Want to see something featured in Haskell Weekly? We love contributions! Tweet us at @HaskellWeekly or open a pull request.


  • Weekly beginner Saturday: Ask anything #0

    If you have a question or would like to help, then feel free to participate. Also, there are no stupid questions.

  • Abusing Haskell dependent types to make Redis queues safer

    I don’t know about you, but quite frankly I’m tired of seeing the same tired vector example being used to demonstrate why dependent types are useful.

  • Backpack for deep learning

    Although there many different types of tensor, the computations for each type of tensor are the same, i.e, they share the same interface. Since Backpack lets you program against one interface which can have multiple implementations, it is the perfect tool for implementing a tensor library.

  • Diversity through inline code

    Haskell is an awesome language, but we need to remember that it is not very useful in isolation. In almost any realistic application, Haskell has to coexist with other languages, even if only to call existing C libraries or to make use of operating system services.

  • Writing a ZX Spectrum game in Haskell

    Haskell, the world’s finest imperative programming language, can now be used to write games for the ZX Spectrum, the world’s finest 80s microcomputer.

  • MonadFix is time travel

    MonadFix is a pretty difficult concept, and I personally found much of the existing content about it online to be somewhat unhelpful. I answered a request for an ELI5 of MonadFix on Reddit, and someone suggested I turn my answer into a blog post.

  • Providing an API for extensible effects and monad transformers

    Interacting with ListenBrainz requires some sort of IO so whatever API I will be offering has to live within some sort of monad. Currently, there are three major options. So, which do we choose? Evaluating the options, I have some concerns.

  • Functors, applicatives, and monads: You don’t need to know theory to use them

    Figuring out how to use the common functional programming type classes is not as hard as you would think. The key here is not to start with understanding the category theory behind them, but rather first start with using their implementations in the standard datatypes.

  • fmap in applicative and monad

    fmap can be implemented using the Applicative methods, so every Applicative is a functor whether we like it or not; the Functor constraint forces us to be honest.

  • Coyoneda and fmap fusion

    Let’s quickly see how the (dual variant of the) Yoneda lemma can speed up some Haskell programs — more specifically ones that are repeatedly calling fmap to transform some data within a Functor.


Sadly we aren’t currently aware of any Haskell job openings. Are you looking to hire a Haskell developer? If so, consider advertising with us!

In brief

Package of the week

This week’s package of the week is reflex-sdl2, a minimal host for SDL2-based Reflex apps.

Call for participation