Good point, well there's Ordering type built-in in Haskell (LT | EQ | GT). Ordering -> bool has 2^3=8 values (const true, const false, == LT, == EQ, == GT, is_lte, is_gte, ne)
EDIT: now you see why I used the smallest type possible to make my point. Exponentials get big FAST (duh).