I wanted to talk about templating, since templating is a common thing you run into. Often times you want to cleanly do a string replace on a bunch of text, and sometimes even need minimal language processing to do what you want. For example, Java has a templating engine called Velocity, but lots of languages have libraries that do this kind of work. I thought it’d be fun to create a small templating engine from scratch with F# as an after work exercise.
The goal is to give the templating processor a set of lookup bags that can be resolved by variables. For example, if I use a variable
$devshorts.isgreat that should correspond to a bag that is keyed first off of
devshorts which returns a new bag, and then a new bag that has a key
isgreat which should return a value.
Getting the AST
First, lets parse the … Read more