Dynamic Type Checking
Dynamic type checking, used in Lisp, checks types at runtime before operations are performed on data.
(defun copy-tree (x)
(if (consp x)
(cons (copy-tree (first x))
(copy-tree (rest x)))
x))
Common Lisp combines dynamic type checking with optional type declarations to allow compilation of code using static checks.