Issue 91
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.
Want to see something featured in Haskell Weekly? Open an issue or pull request on GitHub.
Featured
-
Domain modeling with Haskell: Generalizing with
Foldable
andTraversable
This is the second episode in the short series on Domain Modelling with Haskell. In this episode, we will generalize our domain model from the last episode, providing more fine-grained reporting, with less code.
-
A Haskell beginner’s experience with Yesod
I am a Ruby on Rails developer with 2 years experience with frontend and backend development. This is my experience after using Yesod for 3 months.
-
Now what we need to do is compose these somehow so that all of them are applied to the same input string and a failure at any juncture gives us an overall failure.
-
Haskell functions as functors, applicatives and monads
This post explores how functions in Haskell can be seen as instances of the
Functor
,Applicative
andMonad
type classes, with some reflection on the practical uses of this technique. -
How to prove a compiler correct
The topic of how exactly one goes about proving a compiler correct came up, and I realized that I couldn’t think of a high-level (but concrete) overview of what that might look like.
-
Off the beaten track: Explaining type errors
Last week I gave a talk at Off the Beaten Track 2018 about something that Richard Eisenberg, Harley Eades and I have been thinking about recently: namely, how to generate good interactive error explanations for programmers, especially for type errors.
-
Of all the many, many Haskell language extensions supported by GHC,
LambdaCase
is one of my favorites. It has essentially no downside, does not conflict with any existing code, and introduces a single, simple, useful new construct to the language. -
Recursion schemes part 4½: Better living through base functors
Today I’m going to talk about the notion of a “base functor”, and how the popular recursion-schemes library uses base functors to make recursion schemes more elegant and ergonomic in practice.
-
Hash based package downloads: Part 1 of 2
Suppose you’re working on a highly regulated piece of software. For example, something on a defense contract, or a medical device, or the space shuttle. One goal that most regulators will have is that we can fully determine how the software was built at any point in time.
-
SLURP: A single liberal unified registry of Haskell packages
We have emerged with SLURP, a proposal that could go a long way towards supporting the upsides of a diverse ecosystem, without the sad downsides of forking into mutually-exclusive sub-communities.
Jobs
-
Tocoman seeking software engineers in Helsinki
Hey all! We’re looking for software engineers to (re)build our key products from scratch with pure functional languages. We haven’t locked in any languages yet but most probably we’ll choose Haskell, PureScript and/or Elm.
In brief
- Domain modeling with Haskell: Data structures
- Functors done quick!
- GHC 8.4.1-alpha2 available
- Haskell for JavaScript programmers
- In defense of partial functions in the haskell prelude
- Interpreters a la Carte in Advent of Code 2017 Duet
- Michael Snoyman: SLURP
- Pointwise Kan extensions
- Professional Haskellers: What are your major pain points?
- Simon Peyton Jones: A small milestone
- Stackage nixpkgs overlays
- What makes my Haskell programs (almost) bug free?
Package of the week
This week’s package of the week is brick-skylighting, a library for showing syntax highlighted text in Brick UIs.
Call for participation
- containers: Test sort stability
- dhall-to-cabal: Correct divergences from cabal field names
- hledger: Feature req: Add json as output format
- stack: Allow unqualified component syntax
Events
- January 25: Las Vegas functional programming user group: Meetup
- January 29: Chicago Elm: January code night
- January 30: OKC functional programming: Servant: A type-level DSL for web API specification
- January 31: Quito lambda: Programación funcional en Javascript: Promesas