Blogs (27) >>
ICFP 2017
Sun 3 - Sat 9 September 2017 Oxford, United Kingdom
Mon 4 Sep 2017 10:30 - 10:52 at L1 - Art and Education Chair(s): Kathryn E. Gray

The Racket doctrine tells developers to narrow the
gap between the terminology of a problem domain and general
programming constructs by creating languages instead of just
plain programs. This pearl illustrates this point with the
creation of a relatively simple domain-specific language for
editing videos. To produce the video proceedings of a
conference, for example, video professionals traditionally
use "non-linear" GUI editors to manually edit each talk,
despite the repetitive nature of the process. As it turns
out, video editing naturally splits the work into a
declarative phase and an imperative rendering phase at the end. Hence
it is natural to create a functional-declarative language
for the first phase, which reduces a lot of manual labor.
This user-facing DSL utilizes a second, internal DSL to
implement the second phase, which is an interface to a
general, low-level C library. Finally, we inject type
checking into our language via another DSL that supports
programming in the language of type formalisms. In short,
the development of the video editing language cleanly
demonstrates how the Racket doctrine naturally leads to the
creation of language hierarchies, analogous to the
hierarchies of modules found in conventional functional
languages.