FP Complete

Get base onto stackage.org

Preface for unaware When you install a particular version of GHC on your machine it comes with a collection of “boot” libraries. What does it mean to be a “boot” library? Quite simply, a library must be used for implementation of GHC and other core components. Two such notable libraries are base and ghc. All […]

Storing generated cabal files

tl;dr: I’m moving towards recommending that hpack-using projects store their generated cabal files in their repos, and modifying Stack and Pantry to more strongly recommend this practice. This is a reversal of previous recommendations. Vote and comment on this proposal. Backstory Stack 2.0 switched over to using the Pantry library to manage dependencies. Pantry does […]

Decimal Safety Right on The Money

Fixed point decimal numbers are used for representing all kinds of data: percentages, temperatures, distances, mass, and many others. I would like to share an approach for safely and efficiently representing currency data in Haskell with safe-decimal. Problems we want to solve Floating point I wonder how much money gets misplaced because programmers choose a […]

Rust with DevOps Success Strategies

On February 2, 2020, one of FP Complete’s Lead Software Engineers—Mike McGirr—presented a webinar on using Rust for creating DevOps tooling. Webinar Outline FP Complete is hosting a functional programming webinar on, “Learn Rapid Rust with DevOps Success Strategies.” A beginner’s guide including sample Rust demonstration on writing your DevOps tools with Rust over Haskell. […]

Transformations on Applicative Concurrent Computations

When deciding which language to use to solve challenges that require heavy concurrent algorithms, it’s hard to not consider Haskell. Its immutable and persistent data structures reduce the introduction of accidental complexity, and the GHC runtime facilitates the creation of thousands of (green) threads without having to worry as much about the memory and performance […]

Teaching Haskell with Duet

Teaching Haskell with Duet Teaching Haskell to complete beginners is an enjoyable experience. Haskell is foreign; many of its features are alien to other programmers. It’s purely functional. It’s non-strict. Its type system is among the more pervasive of other practical languages. Simple at the core Haskell’s core language is simple, though. It shares this […]

Async Exceptions in Haskell, and Rust

Before getting started: no, there is no such thing as an async exception in Rust. I’ll explain what I mean shortly. Notice the comma in the title :). GHC Haskell supports a feature called asynchronous (or async) exceptions. Normal, synchronous exceptions are generated by the currently running code from doing something like trying to read […]

Serverless Rust using WASM and Cloudflare

I run a website for Haskellers. People are able to put their email addresses on this website for others to contact them. These email addresses were historically protected by Mailhide, which would use a Captcha to prevent bots from scraping that information. Unfortunately, Mailhide was shut down. And from there, Sorta Secret was born. Sorta […]

Casa and Stack

This post is aimed at Haskellers who are roughly aware of how build infrastructure works for Haskell. But the topic may have general audience outside of the Haskell community, so this post will briefly describe each part of the infrastructure from the bottom up: compiling modules, building and configuring packages, to downloading and storing those […]

Casa: Content-Addressable Storage Archive

Casa stands for “content-addressable storage archive”, and also means “home” in romance languages, and it is an online service we’re announcing to store packages in a content-addressable way. It’s the natural next step in our general direction towards reproducible builds and immutable infrastructure. Its first application is use in the most popular Haskell build tool, […]