<div dir="ltr"><div>Quoting the report[1], "A boolean guard, g, is semantically equivalent to the pattern guard True <- g," which means the answer is "Yes". A boolean guard is equivalent to a pattern match. A predicate involving ==, however, introduces an Eq constraint that would not be required by pattern matching. For a properly equivalent guard, you need to write your predicates using pattern matching</div><div><br></div><div>isEven Even = True</div><div>isEven _ = False</div><div><br></div><div>to avoid the spurious Eq constraint.</div><div><br></div><div>[1] <a href="https://www.haskell.org/onlinereport/haskell2010/haskellch3.html#x8-460003.13">https://www.haskell.org/onlinereport/haskell2010/haskellch3.html#x8-460003.13</a></div></div>