add start of the ADT and Simple Final Tagless implementations from regex_1