A shallow embedding would typically use just functions - a famous
example is Paul Hudak's "region server". A deep embedding would build
syntax - represented with data types - and interpret the syntax or
compile the syntax for another use (so called "off-shoring" e.g. Conal
Elliott's Pan).