Ahora sí tiene sentido, sin los paréntesis alrededor del /:/
.
Recuerden que la aplicación tiene mayor precedencia que los operadores infijos, entonces si ponemos paréntesis en pp1
quedaría:
pp1 = zip /:/ (xnull tail)
lo que equivale a:
pp1 xs = (zip xs) (xnull tail xs)
que equivale a:
pp1 xs = zip xs (xnull tail xs)