¿Qué significa comparable en Elm?

Tengo problemas para entender qué es exactamente uncomparable está en Elm. Elm parece tan confundido como yo.

En el REPL:

> f1 = (<)
<function> : comparable -> comparable -> Bool

Entoncesf1 acepta comparables

> "a"
"a" : String
> f1 "a" "b"
True : Bool

Así pareceString Es comparable.

> f2 = (<) 1
<function> : comparable -> Bool

Entoncesf2 acepta un comparable.

> f2 "a"
As I infer the type of values flowing through your program, I see a conflict
between these two types:

    comparable

    String

EntoncesString es yno es ¿comparable?
¿Por qué es el tipo def2 nonumber -> Bool? ¿Qué otros comparables puedenf2 ¿aceptar?

Respuestas a la pregunta(3)

Su respuesta a la pregunta