Inlining in Khepri - Introduction

I designed Khepri with function inlining in mind, but inlining support was only recently added to the compiler. This post overviews the Khepri compiler's inlining support. A later post will cover some of the specific challenges of inlining Javascript and how Khepri implements inlining. The Need For Inlining The functional…

Incremental Parsing With Feedback in a Web Worker

I previously described running Bennu parsers incrementally. Here I show how we can offload incremental parsing to a web worker, and get realtime feedback as the worker parses data. Example Overview I'm going to develop a simple word count application that uses a Bennu parser run in a web worker…

Akh - Monad Transformers for Javascript

Akh is a small Javascript library of monad transformers and structures. This post briefly covers why monad transformers are useful in Javascript, and offers a very high level look at the monad transformer Akh offers and their interface. Why Monad Transformers are Useful in Javascript Even in untyped, non-functional language…

Khepri Slice Unpacks

Khepri V0.22 adds slice unpacks for unpacking a range of values to an array. Here I briefly cover slice unpacks. You can find the Khepri language documentation here. Rational Functions that take an arbitrary number of arguments are common in Javascript, but writing such variadic function is fairly confusing…

Hash Array Mapped Tries in Javascript

The hash array mapped trie (HAMT) is a hash trie storage optimization that uses less space and performs better than a regular hash trie. Building on my coverage of a Javascript hash trie, I overview hash array mapped tries and cover a basic Javascript HAMT implementation. The example code is…

Khepri Fat Arrows

I overview and criticize the semantics of Javascript's this keyword. Then I quickly overview the ECMAScript 6 and Coffee Script solution to the this problem, before detailing Khepri's fat arrow syntax. Khepri fat arrows make this binding explicit and also can unpack the this object. Javascript The Javascript this keyword…