Issue 80 2017-11-09
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.
I’ve just released HLint 2.0.10, which includes a rule to recognize uses of
foldrthat should really be
map. As an example:
foldr (\curr acc -> (+1) curr : acc) Can be rewritten as:
map (\curr -> (+1) curr)
Edward Kmett recently posted a puzzling gist seemingly showing that at the type level, the
()kind has more than one inhabitant. The goal of this post is to explain what’s going on.
This article is about
experimental-authwhich is still in experimental stage. Deployment in production is not encouraged. And yes, I know about
servant-authbut I haven’t read it thoroughly, yet.
We wanted to try out some of these new (to us) ideas to see how they would gel together and whether we would want to use any of them in production. What follows is my account of using David Reaver’s event-sourcing/CQRS library, Eventful, to build our email sign-up backend.
We’ll observe some of the weaknesses of this system, and how we can improve on them. This week will focus on an approach with type classes and monad transformers. In a couple weeks, we’ll consider free monads, and how we can use them.
The Dhall configuration language just added support for “semantic integrity checks”. This post explains what “semantic integrity check” means, motivates the new feature, and compares to semantic versioning.
Instead of fighting, we should strive together to find a deeper understanding of the principles and trade-off that are involved when writing and evolving code. I would like to make such attempt today by opening a conversation on the communicative power of types.
When such a person reads the statement in question, it comes across as being a self-satisfied kind of ivory-tower sentiment. Which — not at all coincidentally! — is exactly the impression that many working programmers have of functional programmers.
Functional programming provides many advantages, and its popularity has been increasing as a result. However, each programming paradigm comes with its own unique jargon and FP is no exception. By providing a glossary, we hope to make learning FP easier.
Every year when teaching data structures I always forget how to analyze the cost of building a binary heap, which amounts to summing the heights of all the nodes in a full binary tree. So I’m writing down the (lovely) proof here in the hopes that I will remember it next time.
Myrtle is looking for skilled developers to join our growing development team and assist with the development of our core compiler technology. Ideally candidates would have an interest in either efficient hardware design and/or machine learning models and frameworks.
Package of the week
This week’s package of the week is Smudge, a language for describing state machines as well as a compiler that interprets and validates those descriptions to generate code and documentation for them.
Call for participation
- dejafu: Add named-thread variants of the withAsync functions
- hadrian: Put cWarnings in a different file
- servant-checked-exceptions: add note about having to be careful with letting aeson derive FromJSON and ToJSON instances
- November 9: Haskell Hackers: The South SF Bay Haskell User Group: Jon Coens: Hotswapping Haskell
- November 10: Austin Types, Theorems, and Programming Languages: Going through Software Foundations by Benjamin Pierce
- November 13: Vancouver Functional Programmers: Haskell peer study group
- November 14: Intersections KW: Functional abstractions in Haskell
- November 15: Noisebridge Hackerspace: Philip Wadler guest talk on functional programming and type theory
- November 16: Categorical Databases: Intro to categories and functors by David Spivak