Continuation passing style Free Monads and direct style Free Monads

Generalized Algebraic Data Types gives us the power to develop type-safe Free Monads, without having to rely on continuation passing style when using simple Algebraic Data Types. The resulting Abstract Syntax Tree acts as easy to understand specifications for the interpreters of the language it defines.   In today's post, we will revisit the first... Continue Reading →

Free Monads: from the basics to the implementation of composable and effectful stream processing

In the previous post, we introduced IdrisPipes, a library for composable and effectful production, transformation and consumption of streams of data in Idris. We talked about the motivations behind this library, its API and its model, and some of the features it offers. In this post, we will embark in a journey from the basics... Continue Reading →

IdrisPipes: a library for composable and effectful stream processing in Idris

We will continue our series on post on Idris, by implementing a pipe library for Idris, inspired by the great Haskell pipes and Haskell conduit libraries. The goal is to provide Idris with a library for composable and effectful production, transformation and consumption of streams of data. In short, IdrisPipes is an Idris package that... Continue Reading →

Transforming data structures into types: an introduction to dependent typing and its benefits

The 1.0.0 of Idris has been released just a few months back, just enough to start trying out the language and some of the possibilities dependent typing offers. Back in July, we implemented a type safe bowling kata in which we could not create a bowling game that would not satisfy the rules of the... Continue Reading →

Implementing Clojure-like Transducers in Idris: advanced transducers

In the previous post, we started the implementation of a small transducer library for Idris. We went over the main concepts, defined types for each of them, and implemented reduce and transduce. We ended the post by building basic transducers such as mapping or filtering. In today's post, we will continue where we left off.... Continue Reading →

Implementing Clojure-like Transducers in Idris: definitions and main concepts

The 1.0.0 of Idris has been released just a few months back. In previous posts, we went over 10 differences between Haskell and Idris and illustrated the dependent typing features of Idris through the implementation of the rules of the Bowling game at the type level. We will continue this series on post on Idris,... Continue Reading →

Create a website or blog at WordPress.com

Up ↑