A Haskell view of functional programming ("effectful")
This article explores Haskell’s techniques for isolating side effects, starting with the IO monad, which encapsulates impure code to enable reasoning about pure portions. It explains IO’s benefits like sequencing effects and isolating them from infecting other code. The article then provides a high-level overview of more advanced Haskell effect systems including MTL-style monad transformers and freer algebraic effects, comparing their strengths and weaknesses …
A Haskell view of functional programming (well-typedness)
Dive into an educational journey exploring the power of strong static typing, enforcing domain-specific constraints, and ensuring the validity of values. Uncover how well-typedness enhances code reliability, maintainability, and understandability, while enabling robust composability and scalability.
Flix Series Part 1: Higher-order functions & infix combinators
This article delves into the world of functional programming with the Flix programming language with higher-order functions and user-defined infix operators.
Flix Series Part 0: Getting Started & Setup
Are you ready to embark on a coding adventure with Flix? This article introduces Flix, a programming language that combines the best features of functional languages like Scala and Haskell. But that's not all—Flix also brings its own innovative additions, such as row polymorphic extensible records and first-class support for Datalog constraints.
Algebraic Data Types in TypeScript
Note: the code for the TypeScript (to help you follow along) is available here: Encoding Algebraic Data Types in TypeScript code Background Recently I've been reviewing TypeScript code at work. A common pattern I've observed in pull requests and some open source projects is a type that looks like the following: type FooTag = 'Bar' | 'Baz' | 'Qux'; type Foo<A> = { _tag : FooTag, /* Required for the 'Bar' tagged values of Foo */ …
Algebraic Data Types: For the math(s) inclined
Unlock the mathematical elegance of algebraic data types (ADTs) and revolutionize your understanding of data modeling! Discover how algebraic principles can determine the cardinality of ADTs, allowing you to represent an astonishing number of values. Explore the power of sum types, where you can "sum up" the cardinalities of different data constructors to find the overall cardinality of the type. Dive into practical examples, such as representing colors with RGB and …
Experience report deploying PureScript to AWS Serverless (Lambda)
In this blog post, an experienced software engineer shares their successful deployment of a pure functional serverless function to AWS using PureScript. They spent around $15 per day on API Gateway and Lambda invocations without cost optimization, handling a peak load of 32k invocations per minute with low latency. The engineer highlights the need for adjustment in debugging and deployment processes and discusses challenges with tools and automation. Despite concerns, costs …
From Zero to Haskell: Lessons Learned (ZuriHac)
Embarking on functional programming within an established software organization is a daunting task, but this talk reveals some secrets and wisdom acquired from experience trying to build a team this way. Discover how to manage existing systems while incorporating a functional mindset and building expertise. Learn approaches to reduce risks, foster a learning culture, and transition from ad-hoc workarounds to a profound understanding of the problem domain. Join us on this …
Profunctor exploration in less than 100 lines of Haskell
A snippet showing the design space around profunctors using Haskell as the teaching language Includes sighting of Strong, Choice, Cartesian and more profunctors.
Functional Operations (Functional Programming at Comcast Labs Connect)
Maintaining configurations for different nodes and cloud resources in a [micro]service architecture has been an absolute nightmare in the past. The separation between CI/CD environments and production configuration has led to unpredictable results and false positives. Deploying code to staging and production has often resulted in unforeseen consequences that can't be identified beforehand, leaving users frustrated when problems arise. This session introduces the Nix and …

