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 […]
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 […]
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. […]
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 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 […]
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 […]
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 […]
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 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, […]
Haskell Support in Mainstream IDEs I’ve tested out the Haskell support of the top mainstream IDEs. Here’s a rundown of the current state of things. As a dyed-in-the-wool Emacs hacker I’ve never used any of the more recent mainstream IDEs, so I can probably offer an unbiased review of the support provided by each. Note: […]