One of the key aspects of gradual typing is that the same code can execute in two different contexts with different kinds of contracts. For example take the following code:
(ns my-typed
{:lang :core.typed})
(ann my-plus [Num Num -> Num])
(defn my-plus [a b] (+ a b))