Newsletter
Issue 146 2019-02-14
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
-
Isomorphism and Embedding by Marko Dimjašević
To me as a programmer, to write mathematical proofs that are mechanically checked by a computer feels empowering. To have these proofs as executable programs feels even more empowering. Therefore, our proofs have a computational aspect and vice-versa: our programs have a logical aspect.
-
Bank kata in Haskell - dealing with state by Liam Griffin
In functional programming, you cannot encapsulate state or you lose it. Anything that is not returned from a function is lost. So, how do we deal with storing them?
-
Freer Monads, More Better Programs by Sandy Maguire
As best I can tell, the community roughly fragments itself along four lines — those who like
mtl
, those who say “just do everything inReader
IO
”, those who like the three layer cake, and those who think free(r) monads are worth their weight in gold. -
Haskell command-line utility using GHC generics by Gabriella Gonzalez
My aim is to convince you that this Haskell feature improves code clarity without increasing the difficulty. If anything, I consider this version less difficult both to read and write.
-
Haskell Data Types Review! by Monday Morning Haskell
This week we’re taking a quick break from new content. We’ve added our new series on Haskell’s data system to our permanent collection.
-
Masking async tasks in the wild
A new task gets spawned synchronously from a C code and immediately returns a handle: an object of type
Async ()
wrapped inside aStablePtr
. The spawned thread is not waited from anywhere, thus being run in the wild. -
Randomization Testing for an SQL Translator by Alexey Kuleshevich
Not all SQLs are created equal. I’ll say even more, none of the SQL dialects are even close to being equal. In particular, when talking about Microsoft SQL Server and PostgreSQL, their syntax might look similar. However, in their semantics, they are mountains apart.
-
Refactoring Haskell: A Case Study by Vaibhav Sagar
Many people claim that refactoring Haskell is a joy. I’ve certainly found this to be the case, but what does that mean in practice? I thought it might be useful to demonstrate by refactoring some of my own code.
-
The ReaderT design pattern or tagless final? by Magnus Therning
The other week I read V. Kevroletin’s Introduction to Tagless Final and realised that a couple of my projects, both at work and at home, would benefit from a refactoring to that approach.
-
The types got you by Mark Karpov
As the GHC compiler evolves and grows its feature set, one couldn’t help but wonder about the connection between power provided by a programming language and the process of making design decisions when developing software.
Jobs
- Anduril Industires is Hiring in Orange County
Come write Haskell, Rust, and Nix (and some C++ when necessary) to make autonomous robots and drones go! If you like FP, interfacing with hardware, and solving problems in detection, tracking, and autonomous vehicle control, send a note to travis@anduril.com
In brief
- Applied Category Theory 2019
- Call for new Stack issue triager
- Cursors, Part 4: The Textfield cursor
- Experiment: ghc bug bounty
- Finding roots of polynomials in Haskell?
- Fixing GHC’s graph register allocator
- GoogleEmail2 Deprecation
- Haskell network library version 3.0
- IntelliJ-Haskell 1.0.0-beta44
- Lambdabot | Slack App Directory
- oset-0.4.0.1 released
- sexpr-parser-0.1.1.2 released
- Type Classes: Deriving
Package of the week
This week’s package of the week is Hadolint, a smarter Dockerfile linter that helps you build best practice Docker images.