Respect constrained type variables
... when checking type compatibility
e.g.
f :: Bool -> Bool
f = identity
f_pre_incorrect : number -> Bool
f_pre_incorrect _ = True
f_pre_okay : a -> Bool
f_pre_okay _ = True
See https://guide.elm-lang.org/types/reading_types.html (Constrained Type Variables)