FP Complete

Building Haskell Apps with Docker

In this blog post we will show an example of how we can use Docker to build Haskell applications which we then ship inside Docker images. We will observe two cases. First, we will explore the case of developing on the same Linux distro that we are using for deployment (eg. FROM ubuntu:16.04), and then […]

Announcing Stack 1.6.1 release

See https://haskellstack.org for installation and upgrade instructions. Note: we are releasing a bit earlier than planned due to #3624. As such, not all the binaries have been built yet, but the commonly used 64-bit binaries of Linux static, macOS, and Windows are available. In addition, the Windows installer and binary has not been codesigned (we […]

Lambda Conference and Haskell Survey

LAMBDA WORLD Conference Functional programmers are a unique breed of software development professionals. They have decided that the traditional methods to solving problems are not good enough. In their quest to find the most efficient way to find solutions they eventually stumble upon functional programming. Functional programmers also know they are a minority among their […]

Cryptographic Hashing in Haskell

The cryptonite library is the de facto standard in Haskell today for cryptography. It provides support for secure random number generic, shared key and public key encryption, message authentification codes (MACs), and—for our purposes today—cryptographic hashes. For those unfamiliar: a hash function is a function that maps data from arbitrary size to a fixed size. […]

All About Strictness

Haskell is—perhaps infamously—a lazy language. The basic idea of laziness is pretty easy to sum up in one sentence: values are only computed when they’re needed. But the implications of this are more subtle. In particular, it’s important to understand some crucial topics if you want to write memory- and time-efficient code: Weak head normal […]

Exiting a Haskell process

This blog post was inspired by a recent Stack Overflow question. It also uses the Stack script interpreter for inline snippets if you want to play along at home. Don’t forget to get Stack first. The non trick case Here’s a non trick question: what do you think the output of this series of shell […]

Functional Programming and Modern DevOps

In this presentation, Aaron Contorer presents on how modern tools can be used to reach the Engineering sweet spot.   Do you know FP Complete At FP Complete, we do so many things to help companies it’s hard to encapsulate our impact in a few words. They say a picture is worth a thousand words, […]

Stack Issue Triagers

First, the boring, not over-the-top version: the Stack team is starting a new initiative, the Stack Issue Triagers. We’re asking for volunteers to go through the Stack issue tracker on Github and help users with support questions get moving more quickly, and alert the development team of bugs that require their attention. A more advanced […]

To Void or to void

Let’s say we’re going to be writing some code that needs to know the current time. It would be inefficient to have to recalculate the current time whenever it’s demanded, assuming we demand it more than once per second. Instead, it would be more efficient to have a variable that gets updated once per second. […]

The RIO Monad

I’d really intended to write a blog post on a different topic this week. But given that I did some significant refactoring in the Stack codebase related to a number of recent posts, let’s just knock this one out and get to other topics another time. I’ve played with the idea of a RIO (Reader […]