Haskell Weekly

Newsletter

Issue 260 2021-04-22

Subscribe now! We'll never send you spam. You can also follow us on Twitter or with 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

  • Of function instances and abstract syntax by Daniel Brice

    Some Haskell classes class Myclass a admit an instance for functions instance Myclass a => Myclass (x -> a) based on the instance for a. All of these instances have a few things in common: (1) they implement the class methods in a straightforward way as mymethod f = \x -> mymethod (f x), and (2) they are polarizing among Haskell practitioners. The linked blog post is a case study of why one might find such instances compelling and useful.

  • Arrows, through a different lens by Juan Raphael Diaz Simões

    My goal in this post is to show how lenses and other optics can be used in Arrow-based workflows. Doing so is greatly simplified thanks to Profunctor optics and some utilities that I helped add to the latest version of the lens library.

  • Checking for uncheckable: optional constraints

    Can we check if an instance exists and acquire its dictionary without defining boilerplate instances by hand, or using template haskell to generate them?

  • Continued Fractions: Haskell, Equational Reasoning, Property Testing, and Rewrite Rules in Action by Chris Smith

    In this article, we’ll develop a Haskell library for continued fractions. Continued fractions are a different representation for real numbers, besides the fractions and decimals we all learned about in grade school.

  • Functional Flocks by Eddie Jones

    Monads have been widely adopted in the functional programming community, but their dual, co-monads, are sadly not so popular.

  • Hacking on GHC - First Steps by Benjamin Maurer

    That’s why I’ve decided to write about my experience - maybe someone will find the solution to a problem here or get motivated to start hacking on GHC!

  • Poltergeist Types by Guillaume Allais

    Phantom types are a well-known compile-time tool to ensure that illegal actions (such as attempting to write in a read-only file) are unrepresentable. In this blog post we introduce poltergeist types: phantom types whose parameters may still knock around at runtime.

  • A Random Tour of Typeclass in Haskell by Ong Yi Ren

    This article is inspired by Vitaly Bragilevsky’s talk on The clear path to Haskell complexities. This is not a Monad tutorial.

  • Type Families in Haskell: The Definitive Guide by Vladislav Zavialov

    Type families are one of the most powerful type-level programming features in Haskell. You can think of them as type-level functions, but that doesn’t really cover the whole picture. By the end of this article, you will know what they are exactly and how to use them.

  • What I wish somebody told me when I was learning Haskell by Evgeny Poberezkin

    I tried to convert this rant into the collection of ideas that I hope could help both the people who are just starting to learn Haskell and, maybe, some of those who are getting through the advanced levels.

Jobs

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

In brief

  • Default Exception Handlers by Haskell Weekly Podcast

    What happens to exceptions when you don’t explicitly handle them? This week we review Taylor’s blog post about default exception handlers.

  • Deploying a Nixified Haskell binary on AWS Lambda by Jente Hidskes

    For a current project (which I will be writing about soon!), I need to deploy a Haskell binary to AWS Lambda.

  • The end of history for programming by Gabriel Gonzalez

    I spend quite a bit of time thinking about what the end of history for programming might look like. By the “end of history” I mean the point beyond which programming paradigms would not evolve significantly.

  • Global IORef in Template Haskell by Matt Parsons

    One of the potential solutions involves persisting some global state across module boundaries. I decided to investigate whether the “Global IORef Trick” would work for this.

  • Implementing Laziness in C by Siddharth Bhat

    The aim of this blog post is to explain haskell’s (specifically, GHC) evaluation model without having to jump through too many hoops.

  • Nix in Production with Domen Kožar by Compositional

    Domen Kožar is the founder of Cachix, a popular caching service and one of the first products exclusively targeting the Nix ecosystem.

  • Nonempty strings by Type Classes

    Thanks for sticking with us, and congratulations on having your first working Haskell program! From here, we’ll be working on improvements to our palindrome program.

  • PureScript v0.14.1 released by Harry Garrood

    PureScript v0.14.1 has been released! Most of the changes in this release are bug fixes, but we do also have a couple of new features.

  • Text Maintainers: Meeting Minutes by Emily Pillmore

    This meeting is for the text package maintainers as we begin project planning for the text-utf8 conversion work.

  • Why we chose Elm for Humio’s web UI by Humio

    Humio software engineers Thomas Anagrius and Jeroen Engels sat down to talk about why they got involved with Elm for web-based front-end programming.

Show & tell

  • Duckling version 0.2.0.0

  • indexed-paths by Isaac Elliott

    I’ve written a library based around some practical applications of free categories.

  • unicode-collation by John MacFarlane

    Until now, the only way to do proper Unicode sorting in Haskell was to depend on text-icu, which wraps the C library icu4c.

  • unlift by Kowainik

    Typeclass for monads that can be unlifted to arbitrary base monads.

  • wai-handler-hal by Jack Kelly

    This library lets you run wai Applications on AWS Lambda, using the proxy integration features of an API Gateway REST API. This allows you to write your APIs using tools like servant, test them locally using warp, and then build deployment binaries using hal.

Call for participation