I am new to Haskell and today I read though the OpenGL source code and I found this
data VertexArrayDescriptor a =
VertexArrayDescriptor !NumComponents !DataType !Stride !(Ptr a)
deriving ( Eq, Ord, Show )
I tried to search for it and found http://www.haskell.org/ghc/docs/7.4.1/html/users_guide/bang-patterns.html but it is probably something different.
What does it do? What is it for?