Good booty! Indeed, he is mistaken ...
> take 10 [P, P..] <interactive>:6:16: parse error on input ']'
... But it is not
> take 10 [P, P ..] -- one more space [P,P,P,P,P,P,P,P,P,P]
Why are the gaps significant? Because otherwise, the syntax overlaps with prefixed names of the modules, which are of the form Module.name . Here, for example, refers to the operator . from Prelude .
> :t (Prelude..) (Prelude..) :: (b -> c) -> (a -> b) -> a -> c > :t succ Prelude.. succ -- infix use! succ Prelude.. succ :: Enum c => c -> c
Therefore, P.. is . from the module P , and P .. works great in listing the list.
(Yes, this is a bad syntax quirk ...)
source share