From 1f911de4c73d119be58c7868d0af060055ab447d Mon Sep 17 00:00:00 2001
From: Brian Wignall <brianwignall@gmail.com>
Date: Fri, 8 Nov 2019 10:19:13 -0500
Subject: [PATCH] Add IsList instance for ZipList (closes #17433)

---
 libraries/base/GHC/Exts.hs | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/libraries/base/GHC/Exts.hs b/libraries/base/GHC/Exts.hs
index 47392ada3d45..45f6705b0cdc 100755
--- a/libraries/base/GHC/Exts.hs
+++ b/libraries/base/GHC/Exts.hs
@@ -113,6 +113,8 @@ import Data.Ord
 import Data.Version ( Version(..), makeVersion )
 import qualified Debug.Trace
 
+import Control.Applicative (ZipList(..))
+
 -- XXX This should really be in Data.Tuple, where the definitions are
 maxTupleSize :: Int
 maxTupleSize = 62
@@ -209,6 +211,12 @@ instance IsList [a] where
   fromList = id
   toList = id
 
+-- | @since
+instance IsList (ZipList a) where
+  type (Item (ZipList a)) = a
+  fromList = ZipList
+  toList (ZipList as) = as
+
 -- | @since 4.9.0.0
 instance IsList (NonEmpty a) where
   type Item (NonEmpty a) = a
@@ -261,7 +269,7 @@ atomicModifyMutVar# mv f s =
 -- 'SmallMutableArray#' is either the original 'SmallMutableArray#'
 -- resized in-place or, if not possible, a newly allocated
 -- 'SmallMutableArray#' with the original content copied over.
--- 
+--
 -- To avoid undefined behaviour, the original 'SmallMutableArray#' shall
 -- not be accessed anymore after a 'resizeSmallMutableArray#' has been
 -- performed. Moreover, no reference to the old one should be kept in order
-- 
GitLab