Newsletter
Issue 206 2020-04-09
Subscribe now! We'll never send you spam. You can also follow 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.
Featured
-
Common JSON patterns in Haskell, Rust and TypeScript by Christian Kjær
In TypeScript/JavaScript this is straightforward, since JSON is built into the language. But can we also achieve good ergonomics in Haskell and Rust?
-
Dealing with Friday the 13th by Tom Sydney Kerckhove
The
fuzzy-time
library and its cursorcursor-fuzzy-time
allow humans to enter time data with ambiguities and context and have them translated into actual timestamps using good guessing and confirmation from the user. -
DWARF support in GHC (part 5) by Ben Gamari
This is the fifth and final post of a series examining GHC’s support for DWARF debug information and the tooling that this support enables.
-
Introduction to GHC language extensions by Type Classes
This course covers the ones we think are most likely to be useful and helpful to the Haskell beginner or early intermediate as well as a few having to do with issues that crop up whether you’re ready for them or not.
-
Lessons in Managing Haskell Memory by Fabian Thorand and Yorick Sijsling
This time, we are going to describe our journey of getting Haskell garbage collection times under control when dealing with heap sizes of up to 100 GB per instance.
-
The Power of Tiny DSLs by Jack Kelly
This means I have to compute the transformation twice: once as codeworld-api calls, and once as matrices. Or do I?
-
RecordDotSyntax language extension proposal by Simon Peyton Jones
As the shepherd for this proposal, I’m happy to say that the GHC Steering Committee has, finally, come to a conclusion: we accept the proposal, subject to final revisions, with some additional specifics about syntax.
-
A Telegram bot in Haskell on Amazon Lambda by Joachim Breitner
This led me to learn about how I write a Telegram bot in Haskell and how I can deploy such a Haskell program to Amazon Lambda.
-
Wide Haskell: Reducing your Dependencies by Colin Woodbury
This post describes my recent experiments in actively reducing the number of depedencies in my Haskell projects to achieve a “wide” (not deep) dependency graph.
-
X-Ray and WAI by Magnus Therning
As a first step I implemented a WAI middleware that wraps an HTTP request and reports the time it took to produce a response.
Jobs
- Interos is Hiring Full Stack Haskell Software Engineers (ad)
At Interos, we are disrupting the way Fortune 500 companies and government agencies identify and respond to risk within their supply chains. We deliver the data and insights to business leaders that help them identify, visualize and understand the ripple effects that could impact their supply chains, before they happen. Recently funded by Kleiner Perkins and pivoting to an automated solution, Interos is in essence, a start-up SaaS environment.
Trying to hire a Haskell developer? You should advertise with us!
In brief
-
Building a web app with functional programming - Haskell - part II by Iori Matsuhara
This part will focus on the libraries used while building the backend API.
-
Compile and link a Haskell package against a local C library by Roman Cheplyaka
Let’s say you want to build a Haskell package with a locally built version of a C library for testing/debugging purposes.
-
Dining Philosophers with Software Transactional Memory by Christian Klinger
In a nutshell, STM allows you to group different variable-changing statements into atomic blocks.
-
Expand URI templates with Burrito by Taylor Fausak
RFC 6570 defines a URI template as “a compact sequence of characters for describing a range of Uniform Resource Identifiers through variable expansion.”
-
File Path Th 0.1 Released by Dan Fithian
SimSpace recently released version 0.1 of the file-path-th library on GitHub.
-
GHC: How whitespace sensitive operator lexing works by Shayne Fletcher
The point of this is that certain operators can be ascribed different meanings depending on the classification of their occurrence and language extensions that may be in effect.
-
Haskell - Data.Octet v2 (…, NAND, smaller, but slower) by Ramón Soto Mathiesen
A safe and idiomatic implementation of an octet data type in Haskell based on algebraic sum types and NAND logic gates combined with some extensive pattern matching and a low memory footprint.
-
Haskell’s Maybe and Either types by Thomas Heartman
If you don’t have exceptions and you don’t have null: How do you handle errors and invalid inputs?
-
Implementing integer expressions with only data types and pattern matching by Dmitry Non
It’s just shocking how far you can go with with just having some symbols and type constructors. But how really far can we go?
-
An intuition for reflection by Aaron Stump
It is a property relating eliminations and constructions of datatypes. It says that folding with the constructors is the identity.
-
JSON parser performance optimization, the slow path trick by Yuras Shumovich
Given that even slight speedup in a core package will have a big impact on the whole community, we at Typeable decided to invest some time into
aeson
performance. -
Micro C, Part 0 by Joseph Morag
In this series, we will explore how to write a compiler for a small subset of C to LLVM in Haskell.
-
Serving HTML with Servant by Monday Morning Haskell
You’ll have to send the HTML you generate to your end-user, typically over a web server. So in this article we’re going to explore the most basic way we can do that.
Show & tell
-
BerylliumBlueberry by Chris Stryczynski
A simple blogging software using Scotty, Lucid and Postgresql-orm.
-
coercible-subtypes by Koji Miyazato
This library provides unidirectional (one-way) variant of Coercion.
-
smash, smash-lens, smash-microlens, smash-aeson by Emily Pillmore
The core library,
smash
, contains some really interesting datatypes that I’ve been staring at for a while now while musing about theThese
datatype.