Declarative languages contrast with imperative languages
which specify explicit manipulation of the computer's internal
state; or procedural languages which specify an explicit
sequence of steps to follow.