diff --git a/ghc/lib/std/PrelList.lhs b/ghc/lib/std/PrelList.lhs
index dcc0c81b3c62f35f7cca4ac1aa3de9cfaec1b14b..18f5325afb7b624b69e5b7cd49e424467e5475af 100644
--- a/ghc/lib/std/PrelList.lhs
+++ b/ghc/lib/std/PrelList.lhs
@@ -124,7 +124,7 @@ filterFB c p x r | p x       = x `c` r
 
 {-# RULES
 "filter"	forall p xs.	filter p xs = build (\c n -> foldr (filterFB c p) n xs)
-"filterFB"	forall c p q.	filterFB (filterFB c p) q = filterFB c (\x -> p x && q x)
+"filterFB"	forall c p q.	filterFB (filterFB c p) q = filterFB c (\x -> q x && p x)
 "filterList" 	forall p.	foldr (filterFB (:) p) [] = filterList p
  #-}