-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA512 On Tue, Dec 23, 2008 at 10:48 PM, Henning Thielemann wrote: > Andrew Wagner schrieb: >> The problem here is even slightly deeper than you might realize. For >> example, what if you have a list of functions. How do you compare two >> functions to each other to see if they're equal? There is no good way >> really to do it! So, not only is == not completely polymorphic, but it >> CAN'T be. >> >> There is a nice solution for this, however, and it's very simple: >> >> contain :: Eq a -> [a] -> Bool >> contain x [] = False >> contain x (y:ys) = if x == y then True else contain x ys > > Would HLint jump in here and suggest: > contain x (y:ys) = x == y || contain x ys > ? Or even "replace 'contain' by 'elem'" ?
I just tried it out. hlint makes no suggestions. Incidentally, your syntax is wrong. Should be: contain :: (Eq a) => a -> [a] -> Bool contain _ [] = False contain x (y:ys) = if x == y then True else contain x ys - -- gwern -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) iEYEAREKAAYFAklRtvAACgkQvpDo5Pfl1oKTLQCgixTp95VA8ccRxuWTpIgXVo2k +XkAniyWDU6f1sSCzdUuJIq4pAcgDS0K =Uhkz -----END PGP SIGNATURE----- _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe