In the inline-c package, there's an example calling the C library GNU Scientific Library gsl from Haskell.
solveOde fun x0 f0 xend =
coerce $ solveOdeC (coerce fun) (coerce x0) (coerce f0) (coerce xend)
I'm trying to wrap more of gsl in Haskell and I try to understand every line of the example code. So why it uses Data.Coerce here?