Issue 150 2019-03-14
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.
How we made Haskell search strings as fast as Rust by Ruud van Asseldonk
In this post, we will describe our quest to create Alfred-Margaret, the fastest Haskell implementation of the Aho-Corasick string searching algorithm, which powers string search in Channable.
An example of state-based testing in Haskell by Mark Seemann
This article is an instalment in an article series about how to move from interaction-based testing to state-based testing.
Bank kata in Haskell - using and testing date by Liam Griffin-Jowett
Our final task to complete the kata is to add a date to the transactions. We will implement this in small logical steps, using the compiler and the tests to drive our design.
Ceci n’est pas un default by Guillaume Allais
Being the default value is not the same as being actively set to a value which happens to match the default.
Maybeas a type constructor enriching an existing type with a default value is not satisfactory: what this default value means is not documented in the type.
Code smell: Boolean blindness by Thomas Tuegel
The popular term “boolean blindness” refers to the information lost by functions that operate on Bool when richer structures are available. Erasing such structure can give code a bad smell.
Deriving not-so-complex types by Arvind Devarajan
Often times, I get to read Haskell code with these patterns:
(fmap . fmap),
fmap (<*>), etc. I’ve just taken three of these types, and break these into their intuitions here in the hopes that somebody out there can understand when to use these.
Enhancing File Durability in Your Programs by Roman Gonzalez
An unexpected shutdown (like a kernel panic, or unplugging the power cord) in a machine should not affect the durability of confirmed writes in programs we develop.
Freer, yet Too Costly Higher-order Effects by Sandy Maguire
As of today I have free, higher-order effects working. Unfortunately, they are not fast. I don’t think this is a fundamental limitation, merely that whatever code I’ve written isn’t amenable to GHC’s optimization process.
Modifying a Library! by Monday Morning Haskell
We can see how to incorporate the change without stressing about its complexity. Even if you’re only a beginner, this is a good skill to learn now!
Types versus Tests: two approaches for writing correct software by Javier Casas
We try our best to have software without bugs. It’s just a hard problem, and no silver bullet to slay this beast. All we have are several approaches at trying to kick the bugs out of the software.
- Haskell Team Lead at Zoomin in Tel Aviv
- Haskell Developer at Relex in Helsinki
- Functional Programmer at Chordify in Utrecht
- Engineer at Groq in Menlo Park
- Cryptocurrency Software Engineer at Pyrofex in Utah
- Tweag Internship Programme 2019
- SRE Intern at Formation in San Francisco
- Aelve Guide: Popular blogs
- ANN: topograph
- Dhall Discourse
- Radicle: A peer-to-peer stack for code collaboration
- Recording of My Talk at Lambda Days 2019
- Taskell, Cmt, and Brök
- Trigger: small utility to restart your app on recompile
- Type Classes: Coercion and datatype contexts
- TypeScript vs PureScript: Not all compilers are created equal
- What is the utility of row polymorphism?
Package of the week
This week’s package of the week is SBV (SMT Based Verification), a library that allows you to express properties about Haskell programs and automatically prove them using SMT (Satisfiability Modulo Theories) solvers.