(defn literal-number
"Returns its argument, wrapped in a marker type that responds to the generic
operations registered in [[emmy.numsymb]].
Symbols are automatically treated as [[literal-number]] instances, so
```clojure
(* 10 (literal-number 'x))
```
is equivalent to
```clojure
(* 10 'x)
```
If you pass an actual number, emmy will attempt to preserve exact values
through various operations:
```clojure
(g/+ 1 (g/cos (g/* 2 (literal-number 4))))
;;=> (+ 1 (cos 8))
```
Notice that the `(g/* 2 ...)` is evaluated, but `cos` evaluation is deferred,
since the result is inexact. On the other hand, if the number is inexact to
begin with:
```clojure
(g/+ 1 (g/cos (g/* 2 (literal-number 2.2))))
;;=> 0.6926671300215806
```
the system will go ahead and evaluate it."
[x]
(x/make-literal ::x/numeric x))