I've used Haskell's OpenGL libraries some, and definitely recommend them over C++. OpenGL's callbacks feel much more natural in a functional language and the monadic do notation works very well at managing nested matrix transformations. Also, having an interpretive shell to play around with the types of functions is very useful.
Haskell has OpenGL bindings: http://www.haskell.org/haskellwiki/Opengl
So does OCaml: http://glcaml.sourceforge.net/