En Haskell, y en lo siguiente, "o :: t" quiere decir que el objeto "o" es miembro del tipo "t", y "t -> s" es un tipo, especificamente una funcion, que consume algo de tipo "t" y produce algo de tipo "s".