Maxime Henrion avatar Maxime Henrion committed 99f82b4

Add a comment explaining why it's important to pattern match on the U1
constructor of the U1 instance.

Comments (0)

Files changed (1)

src/Control/DeepSeq.hs

   grnf :: f a -> ()
 
 instance GDeepSeq U1 where
+  -- It is important to pattern match on the U1 constructor here. If we didn't
+  -- and used an underscore pattern, the following equality wouldn't hold:
+  --   x `deepseq` () = x `seq` () = _|_
+  --     where x = undefined :: T
+  -- with T being () or any unit-shaped type with a DeepSeq instance.
   grnf U1 = ()
 
 instance DeepSeq a => GDeepSeq (K1 i a) where
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.