diff --git a/src/constant.rs b/src/constant.rs
index d3991b7..3ae944a 100644
--- a/src/constant.rs
+++ b/src/constant.rs
@@ -95,13 +95,13 @@
     impl Synom for ConstExpr {
         named!(parse -> Self, do_parse!(
             mut e: alt!(
-                map!(syn!(ConstUnary), |e: ConstUnary| e.into())
+                map!(syn!(ConstUnary), |e| e.into())
                 |
-                map!(syn!(Lit), |e: Lit| e.into())
+                map!(syn!(Lit), |e| e.into())
                 |
-                map!(syn!(Path), |e: Path| e.into())
+                map!(syn!(Path), |e| e.into())
                 |
-                map!(syn!(ConstParen), |e: ConstParen| e.into())
+                map!(syn!(ConstParen), |e| e.into())
                 // Cannot handle ConstExpr::Other here because for example
                 // `[u32; n!()]` would end up successfully parsing `n` as
                 // ConstExpr::Path and then fail to parse `!()`. Instead, callers
diff --git a/src/expr.rs b/src/expr.rs
index 96a593d..0ed9797 100644
--- a/src/expr.rs
+++ b/src/expr.rs
@@ -1265,7 +1265,7 @@
                 })
             )
             |
-            map!(syn!(Ident), |name: Ident| FieldValue {
+            map!(syn!(Ident), |name| FieldValue {
                 ident: name.clone(),
                 expr: ExprKind::Path(ExprPath { qself: None, path: name.into() }).into(),
                 is_shorthand: true,
@@ -1648,7 +1648,7 @@
     impl Synom for PatPath {
         named!(parse -> Self, map!(
             syn!(ExprPath),
-            |p: ExprPath| PatPath { qself: p.qself, path: p.path }
+            |p| PatPath { qself: p.qself, path: p.path }
         ));
     }
 
@@ -1663,7 +1663,7 @@
                         trailing: option!(syn!(Comma)) >>
                         (dots, trailing)
                     ))
-                ), |x: Option<_>| x.and_then(|x| x)) >>
+                ), |x| x.and_then(|x| x)) >>
                 rest: cond!(match dotdot {
                                 Some((_, Some(_))) => true,
                                 _ => false,
diff --git a/src/generics.rs b/src/generics.rs
index 60a94a6..7cb6c82 100644
--- a/src/generics.rs
+++ b/src/generics.rs
@@ -212,7 +212,7 @@
                 |
                 epsilon!() => { |_| (Delimited::new(), None, None, None) }
             ),
-            |(lifetimes, ty_params, lt, gt): (_, Option<_>, _, _)| Generics {
+            |(lifetimes, ty_params, lt, gt)| Generics {
                 lifetimes: lifetimes,
                 ty_params: ty_params.unwrap_or_default(),
                 where_clause: WhereClause::default(),
diff --git a/src/ty.rs b/src/ty.rs
index 1bb710f..e767852 100644
--- a/src/ty.rs
+++ b/src/ty.rs
@@ -556,7 +556,7 @@
             })
         )
         |
-        map!(syn!(Self_), |s: Self_| (None, s.into()))
+        map!(syn!(Self_), |s| (None, s.into()))
     ));
 
     impl Synom for ParenthesizedParameterData {
diff --git a/synom/src/lib.rs b/synom/src/lib.rs
index de48e0d..7ad3b30 100644
--- a/synom/src/lib.rs
+++ b/synom/src/lib.rs
@@ -194,7 +194,7 @@
 ///
 /// // Or equivalently:
 /// named!(if_condition2 -> Expr,
-///     map!(syn!(ExprIf), |if_: ExprIf| *if_.cond)
+///     map!(syn!(ExprIf), |if_| *if_.cond)
 /// );
 /// #
 /// # fn main() {}
@@ -206,7 +206,7 @@
             ::std::result::Result::Err(err) =>
                 ::std::result::Result::Err(err),
             ::std::result::Result::Ok((i, o)) =>
-                ::std::result::Result::Ok((i, call!(o, $g))),
+                ::std::result::Result::Ok((i, $crate::invoke($g, o))),
         }
     };
 
@@ -215,6 +215,14 @@
     };
 }
 
+// Somehow this helps with type inference in `map!`.
+//
+// Not public API.
+#[doc(hidden)]
+pub fn invoke<T, R, F: FnOnce(T) -> R>(f: F, t: T) -> R {
+    f(t)
+}
+
 /// Parses successfully if the given parser fails to parse. Does not consume any
 /// of the input.
 ///
