Welcome to another issue of Haskell Weekly! Haskell is a purely functional programming language that focuses on robustness, concision, and correctness. This is a weekly summary of what’s going on in its community.
We are happy to announce the 15 projects accepted for Summer of Haskell 2017 and that the community bonding period has begun.
As programmers we occasionally find ourselves in “Programmer’s Hell”, where our regular abstractions fail to satisfactory solve certain recurrent problems. In this post we’ll have a look at some instances of such situations, their “ad hoc” solutions provided at the language level, and finally at how these problems can be solved in a uniform way using monads.
As laid out yesterday, there are some interesting questions pertaining to Template Haskell and cross compilation. Today we will put all the pieces together and cross compile Template Haskell to our Raspberry Pi with file and process IO!
In a prior post I wrote about how type class instance selection worked. To help get a sense of good type class design, I want to walk through a type class pattern and a related type class anti-pattern.
Last week we explored the many different string types in Haskell. But this isn’t the only situation where we seem to have an abundance of similar types. We can also see this in Haskell’s numeric types. Again, we have the issue that we often want to represent numbers in slightly different ways.
If you haven’t encountered them before, typed holes are a feature where you put one or more variables starting with
_on the right hand side of a definition to get GHC to tell you the type of the value that fits in that hole, and you can narrow the hole as necessary to get the type of a subexpression until you have enough information to complete the definition.
I have been using Servant for about two years now. I really like it. It’s easy to use and type-safe. If I need to write a JSON API in Haskell, Servant is almost always my first choice. However, one thing I have always wanted is an easy way to handle errors in my server handlers.
Eta is a fork of GHC which provides Haskell with a JVM backend. I’ve been working on it recently and did a presentation on it at LambdaJam. One of the questions from my presentation was “since Eta takes Haskell and produces JVM code, can I use it to write Android apps?” I had a feeling Eta was close to being able to. It turns out it’s not just close, it’s pretty easy!
Of course open source work is all volunteer and I’m grateful for whatever the authors choose to do, but we may want to consider which packages are languishing and need new maintainers to help.
Package of the week
This week’s package of the week is Amazonka, a comprehensive Amazon Web Services (AWS) SDK.