Making DSLs in F#
codeproject.com