Issue 64 2017-07-20
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 purely functional programming language that focuses on correctness, productivity, and expressiveness. This is a weekly summary of what’s going on in its community.
Announcing: the new unliftio library
For the past few years, Francesco Mazzoli and I have discussed issues around monad transformers — and the need to run their actions in IO — on a fairly regular basis. I wrote the monad-unlift library a while ago to try and address these concerns.
Type safe dimensional analysis in Haskell
Years ago my colleague Gustavo asked how I would represent physical units like
kg*m/s^2as types so the compiler can check that they match up and cancel correctly. F# supports this natively, but it felt weird to have it baked into the type system.
Morgan Stanley open source: hobbes
Over the last few years, I have been developing hobbes — a programming language, JIT compiler, and database system — as part of my work for Morgan Stanley. It has become a critical piece of infrastructure in our low-latency, high-volume trading applications.
NStack is hiring Haskellers in London (onsite/remote) (ad)
NStack lets data scientists and analysts to do sophisticated data work in the cloud without a team of engineers. Come help us build the platform for composable, data-driven microservices, using a mixture of Haskell and Linux systems tech. Reply via the link or email email@example.com.
Demystifying Haskell assignment
This post clarifies the distinction between
=in Haskell, which sometimes mystifies newcomers to the language. Most languages use only one symbol to assign values (such as
:=), so why does Haskell use two?
If you look at the original property-based testing library, QuickCheck, tests are very closely tied to types: The way you typically specify a property is by inferring the data that needs to be generated from the types the test function expects for its arguments. This is a bad idea.
Get started with sending SMS in Haskell
Functional programming languages are gaining in popularity so let’s hop on that Haskell bandwagon. With Haskell, you can write clean, concise, and expressive code.
Our platonic ideal of a Haskell library is something that exports a single, coherent concept in such a way that it never needs to be reimplemented. This is not that: scraping is a dirty, error-prone, highly contingent endeavor.
State machine testing with Hedgehog
This is a really nice way to specify and test effectful systems. It’s much more effective than example-testing with canned action sequences. There’s also a lot of potential for test reuse: anything implementing the same interface can use the same property.
The world’s fastest extensible effects framework
I uploaded a new version of
monad-skeleton-0.1.4, an operational monad library. As a result of performance optimization in the new version, extensible, the extensible effects library based on it, is now much faster than the other well-known libraries.
The free monad allows you to build your own custom monad. This lets you use the do notation for whatever you want. I find that a lot of the tutorials on the Free monad have too much build-up, and it’s hard to figure out what the code should actually be at the end.
Package of the week
This week’s package of the week is language-ninja, a library for dealing with the Ninja build language.
Call for participation
- cabal: Before testing if libraries link, do a vanilla run to check if the compiler is misconfigured
- hindent: Indenting class creates syntax error
- miso: Fix 7.8, 7.6 builds
stack newcan’t be pointed at an intranet site
- text: Add
Do you have a beginner-friendly issue you want some help with? Email firstname.lastname@example.org to get it included here!