diff --git a/Numeric/Optimization/Algorithms/HagerZhang05.hsc b/Numeric/Optimization/Algorithms/HagerZhang05.hsc
--- a/Numeric/Optimization/Algorithms/HagerZhang05.hsc
+++ b/Numeric/Optimization/Algorithms/HagerZhang05.hsc
@@ -268,6 +268,10 @@
 mutableG :: Gradient t -> Gradient Mutable
 mutableG (VGradient f) = MGradient f'
     where
+      f' :: (PrimMonad m, Functor m) =>
+            PointMVector m
+         -> GradientMVector m
+         -> m ()
       f' mx mret = f <$> copyInput mx >>= copyOutput mret
 mutableG (MGradient f) = MGradient f
 
@@ -313,6 +317,10 @@
 mutableC :: Combined t -> Combined Mutable
 mutableC (VCombined f) = MCombined f'
     where
+      f' :: (PrimMonad m, Functor m) =>
+            PointMVector m
+         -> GradientMVector m
+         -> m Double
       f' mx mret = do
         (v,r) <- f <$> copyInput mx
         copyOutput mret r
diff --git a/nonlinear-optimization.cabal b/nonlinear-optimization.cabal
--- a/nonlinear-optimization.cabal
+++ b/nonlinear-optimization.cabal
@@ -3,7 +3,7 @@
 Tested-With:         GHC
 Category:            Math
 Name:                nonlinear-optimization
-Version:             0.3.4
+Version:             0.3.5
 Stability:           experimental
 License:             GPL
 License-File:        LICENSE
