If you haven't heard of Tagless Final style (also called "Finally Tagless Interpreters"), here's a brief recap.
Our program will do the simple thing: it will as a user about random upper bound and return a random number in range [0, bound).
Enter random upper bound:
> aaaa
"aaaa" is not an integer
Do you want to continue?
> y
Enter random upper bound:
> 23
Your random is: 4
Do you want to continue?
> n
Good-bye
And this is the true power of Tagless Final Interpreters.
Great talk – you definitely should check it out!