  We present a novel approach to construction of a formal semantics for a
programming language. Our approach, using a parametric denotational semantics,
allows the semantics to be easily extended to support new language features,
and abstracted to define program analyses. We apply this in analysing a
duck-typed, reflective, curried dynamic language. The benefits of this approach
include its terseness and modularity, and the ease with which one can gradually
build language features and analyses on top of a previous incarnation of a
semantics.
