firefly Featured Async/await inference in Firefly: Part 3 In the last post, we saw how to implement colorless async/await via effect inference. In this post, we will extend the solution to solve a common problem in web apps, where requests continue on even though the response will never be used. It's like a memory leak,
firefly Featured Async/await inference in Firefly: Part 2 In the last post, we sketched out the high level rules of the async/await inference. This post will show how it works under the hood for a concrete example. If you missed the last post, here it is: Async/await inference in FireflyFirefly is a new general purpose programming
firefly Featured Async/await inference in Firefly Firefly is a new general purpose programming language that tries to achieve convenience and safety at the same time, by using pervasive dependency injection. There is no global access to the file system, the network, other processes or devices. Instead, you access these through a system object that is passed
Monads (forget about bind) Monads are a simple concept, but is made unreasonably hard to learn partly by tutorials featuring weird analogies and partly by Haskell-specific cruft. In this post, I promise not to use any analogies, and we'll get rid of all the cruft by inserting this directive in the top
Algebraic Datatypes in Java 8 Sum types, also known as tagged unions are a feature in many modern languages. Traditional object-oriented languages from the 90's, having recently aquired lambda functions, still have to catch up in this area. But with this trick you can get pretty close. In Haskell, defining a tree structure
A Parser Combinator for Java 8 Parsing source code, configuration files and document formats can be cumbersome in Java. You'll either have to reach for a code-generating tool such as ANTLR or write a bunch of ad-hoc code that shows little resemblance to the grammar you're trying to implement. Parser Combinators to