On Thu, Mar 3, 2011 at 11:48 AM, Chris Smith <cdsm...@gmail.com> wrote: > On Thu, 2011-03-03 at 11:39 +0530, Karthick Gururaj wrote: >> What is the "()" type? Does it refer to a tuple? How can tuple be >> ordered, let alone be enum'd? I tried: > > The () type is pronounced "unit". It is a type with only 1 value, also > called () and pronounced "unit". Since it only has one possible value, > it conveys no information at all, and is sometimes used in situations > analogous to C's 'void' keyword. > > Okay, actually that was a little bit of a lie; () has two "values": () > and bottom. Bottom is the "value" that corresponds to the program > hanging in an infinite loop or dying with an error message. But if you > have an actual, honest-to-goodness value that's not bottom, it has to be > (). Thanks - is this the same "unit" that accompanies IO in "IO ()" ? In any case, my question is answered since it is not a tuple.
> >> But, surprise: >> Prelude> (1,1) > (1,2) >> False >> Prelude> (2,2) > (1,1) >> True >> Prelude> (1,2) > (2,1) >> False >> Prelude> (1,2) < (2,1) >> True > > Okay, so this is no longer Enum, but just Ord. The ordering defined in > the Ord instance for tuples is the normal lexicographic order: the > comparison between the first elements dominates; but if the first > elements coincide, then the second are compared instead. For larger > tuple types, the same pattern continues. > > Think of it like organizing words in alphabetical order, where here you > know the words all have the same number of letters. >> Ok. Works. But on a non-commutative operation like division, we get: >> Prelude> let x = (/) 20.0 >> Prelude> x 10 >> 2.0 >> Prelude> let y = (/20.0) >> Prelude> y 10 >> 0.5 >> >> So a curried infix operator fixes the first argument and a "sectioned >> infix" operator fixes the second argument? > > Sections can be either left sections or right sections, so you can pick > which argument is provided. > > Prelude> let y = (/ 20.0) > Prelude> y 10 > 0.5 > Prelude> let y = (20.0 /) > Prelude> y 10 > 2.0 > > Hope that helps, Thanks, it does! _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe