In managing projects at FP Complete, I get to see both the software development and devops sides of our engineering practice. Over the years, I’ve been struck by the recurrence of a single word appearing repeatedly in both worlds: immutability. On the software side, one of the strongest tenets of functional programming is immutable data […]
The exceptions package provides three typeclasses for generalizing exception handling to monads beyond IO: MonadThrow is for monads which allow reporting an exception MonadCatch is for monads which also allow catching a throw exception MonadMask is for monads which also allow safely acquiring resources in the presence of asynchronous exceptions For reference, these are defined […]
While helping a client ship a medical device we were tasked to make its response time bearable. This was no easy feat, given that each request to this device requires running a simulation that takes hours if ran on a single CPU. This long response time would make it impossible for doctors to use this […]
Many common programming languages today eschew manual memory management in preference to garbage collection. While the former certainly has its place in certain use cases, I believe the majority of application development today occurs in garbage collected languages, and for good reason. Garbage collection moves responsibility for many memory issues from the developer into the […]
Maintenance matters and it’s where Haskell shines We Spend Most of Our Time on Maintenance Look at the budget spent on your software projects. Most of it goes towards maintenance. The Mythical Man-Month by Fred Brooks states that over 90% of the costs of a typical system arise in the maintenance phase, and that any […]
Example code can be found here. When Node.JS first came onto the scene it successfully popularized the event-loop. Ryan Dahl correctly identified a serious problem with the way that I/O is generally handled in concurrent environments. Many web servers, for example achieve concurrency by creating a new thread for every connection. In most platforms, this […]
The language Scala promises a smooth migration path from Object-oriented Java to functional programming. It runs on the JVM, has concepts both from OOP and FP, and an emphasis on interoperability with Java. As a multi-paradigm language, Scala can flatten the learning curve for those already familiar with OOP, at the price of making some […]
Scripting in Haskell Writing scripts in Haskell using Stack is straight-forward and reliable. We’ve made a screencast to demonstrate this: Summary Slides in the screencast cover: What Haskell is What Stack is We make a case for reproducible scripting We cover the following example cases: Hello, World! as a Haskell script Generating a histogram of […]
Mastering Time-to-Market with Haskell For bringing your product to market, there isn’t just one metric for success. That depends on your business needs. Haskell is the pure functional programming language that brings tangible benefits over its competitors for a variety of TTM priorities. Let’s explore four of them. Speed to market You may want to […]