[Haskell-beginners] Function result being inversed

aditya siram aditya.siram at gmail.com
Tue Jan 25 21:09:39 CET 2011


You want something like:
  f x = x 4
  main = do
      print $ f $ (<) 3
      print $ f $ (<) 5

=> True
     False

(< 3) 4 translates to (4 < 3)
-deech
On Tue, Jan 25, 2011 at 2:00 PM, Xavier Shay <xavier-list at rhnh.net> wrote:
> 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
>
> _______________________________________________
> Beginners mailing list
> Beginners at haskell.org
> http://www.haskell.org/mailman/listinfo/beginners
>



More information about the Beginners mailing list