[Haskell-beginners] Function result being inversed

Xavier Shay xavier-list at rhnh.net
Tue Jan 25 21:00:11 CET 2011


Hello,
I am confused by the following code.
I would expect results of True, False.

$ ghci
*Main> let f x = x 4
*Main> f(<) 3
False
*Main> f(<) 5
True

This came about because I was trying to refactor a sort function I wrote:

   mySort [] = []
   mySort (h:t) =
     (f (<= h)) ++ [h] ++ (f (> h))
     where f x = mySort (filter x t)

I came up with this, which appears to work, though the comparison 
operators are backwards.

   mySort [] = []
   mySort (h:t) =
     f(>) ++ [h] ++ f(<=)
     where f x = mySort (filter (x h) t)

Cheers,
Xavier



More information about the Beginners mailing list