Los operadores que comienzan con dos puntos son un nombre de constructor o tipo. En este caso, es un nombre de tipo para un tipo de datos específico de quickcheck, pero en general el símbolo: -> podría usarse para cualquier constructor o nombre de tipo que desee (no es parte del lenguaje propiamente dicho).
The definition of :-> in quickcheck:
-- the type of possibly partial concrete functions
data a :-> c where
Pair :: (a :-> (b :-> c)) -> ((a,b) :-> c)
(:+:) :: (a :-> c) -> (b :-> c) -> (Either a b :-> c)
Unit :: c -> (() :-> c)
Nil :: a :-> c
Table :: Eq a => [(a,c)] -> (a :-> c)
Map :: (a -> b) -> (b -> a) -> (b :-> c) -> (a :-> c)
¿Podría publicar la adición como un aswer? Es genial responder a tus propias preguntas, difícil. – fuz