diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+# 0.4.8.2
+
+* Fixed compilation on GHC 8.4.
+
 # 0.4.8.1
 
 * Added `HasCallStack` for some partial functions.
diff --git a/microlens.cabal b/microlens.cabal
--- a/microlens.cabal
+++ b/microlens.cabal
@@ -1,5 +1,5 @@
 name:                microlens
-version:             0.4.8.1
+version:             0.4.8.2
 synopsis:            A tiny lens library with no dependencies. If you're writing an app, you probably want microlens-platform, not this.
 description:
   NOTE: If you're writing an app, you probably want <http://hackage.haskell.org/package/microlens-platform microlens-platform> – it has the most features. <http://hackage.haskell.org/package/microlens microlens> is intended more for library writers who want a tiny lens library (after all, lenses are pretty useful for everything, not just for updating records!).
diff --git a/src/Lens/Micro.hs b/src/Lens/Micro.hs
--- a/src/Lens/Micro.hs
+++ b/src/Lens/Micro.hs
@@ -815,7 +815,7 @@
 >>> Just 1 & non 0 %~ subtract 1
 Nothing
 
->>> Just 1 & non 0 .~ (+ 1)
+>>> Just 1 & non 0 %~ (+ 1)
 Just 2
 
 'non' is often useful when combined with 'at'. For instance, if you have a map of songs and their playcounts, it makes sense not to store songs with 0 plays in the map; 'non' can act as a filter that wouldn't pass such entries.
@@ -914,7 +914,7 @@
 {- |
 'singular' turns a traversal into a lens that behaves like a single-element traversal:
 
->>> [1,2,3] ^. signular each
+>>> [1,2,3] ^. singular each
 1
 
 >>> [1,2,3] & singular each %~ negate
@@ -1166,7 +1166,7 @@
 
 Gathering all @Left@s in a structure (like the 'Data.Either.lefts' function, but not necessarily just for lists):
 
->>> [Left 1, Right 'c', Left 3] ^.. each._Just
+>>> [Left 1, Right 'c', Left 3] ^.. each._Left
 [1,3]
 
 Checking whether an 'Either' is a 'Left' (like 'Data.Either.isLeft'):
@@ -1273,8 +1273,14 @@
 instance Applicative f => Monoid (Traversed a f) where
   mempty = Traversed (pure (error "Lens.Micro.Traversed: value used"))
   {-# INLINE mempty #-}
+#if !MIN_VERSION_base(4,11,0)
   Traversed ma `mappend` Traversed mb = Traversed (ma *> mb)
   {-# INLINE mappend #-}
+#else
+instance Applicative f => Semigroup (Traversed a f) where
+  Traversed ma <> Traversed mb = Traversed (ma *> mb)
+  {-# INLINE (<>) #-}
+#endif
 
 newtype Bazaar a b t = Bazaar (forall f. Applicative f => (a -> f b) -> f t)
 
diff --git a/src/Lens/Micro/Extras.hs b/src/Lens/Micro/Extras.hs
Binary files a/src/Lens/Micro/Extras.hs and b/src/Lens/Micro/Extras.hs differ
diff --git a/src/Lens/Micro/Type.hs b/src/Lens/Micro/Type.hs
Binary files a/src/Lens/Micro/Type.hs and b/src/Lens/Micro/Type.hs differ
