Issue 80 2017-11-09
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.
Want to see something featured in Haskell Weekly? We love contributions! Tweet us at @HaskellWeekly or open a pull request.
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)
Computing with impossible types
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.
Authorization in Servant: Walkthrough
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.
Organizing our effects effectively
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.
Semantic integrity checks are the next generation of semantic versioning
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.
On types and intent: How much can we communicate using types?
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.
Proofs and programs and rhetoric
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.
Sum of heights in a binary tree
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.
Functional programmers at Myrtle Software
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.