
Tuples aren't really anything special, you could define your own (2 item) type like: data Pair a b = Pair a b The main advantage you get with tuple is that first and foremost it's part of the standard library so it's used all over the place. It's really just a convenient shortcut for holding data, and arguably a explicit data type that provides more meta-information about what exactly it contains is usually a better choice rather than the abstract tuple which doesn't really tell you much of anything. E.G. which is more obvious: draw :: (Int, Int) -> (Int, Int) -> IO () or data Line = Line { startX :: Int, startY :: Int, endX :: Int, endY :: Int } draw :: Line -> IO () More commonly you'd use a tuple to represent a point, but a type declaration to make the signature more explicit as in: type Point = (Int,Int) draw :: Point -> Point -> IO () or possibly type Point = (Int, Int) data Line = Line { lineStart :: Point, lineEnd :: Point } draw :: Line -> IO () The need to have some generic data structure that holds 2 or more other pieces of data however is something you run across so often that from a practical standpoint it makes sense to have it as part of the standard library, particularly for quick and dirty rapid calculations as it's one less piece of boiler plate throw away you need to worry about creating. In most cases you could even replace a tuple with a list of two elements, but then you lose some of the type safety because lists don't guarantee the number of elements they contain in the type signature. -R. Kyle Murphy -- Curiosity was framed, Ignorance killed the cat. On Mon, Aug 27, 2012 at 9:47 PM, Carlos J. G. Duarte < carlos.j.g.duarte@gmail.com> wrote:
Sorry if this question is too insane, but I was wondering if tuples are really needed in Haskell. I mean, could tuples be generally replaced by variables unroll (f x y z) and explicit data types, or are there some things only possible to do via tuples?
Thx in advance (and sorry if this looks silly).
______________________________**_________________ Beginners mailing list Beginners@haskell.org http://www.haskell.org/**mailman/listinfo/beginnershttp://www.haskell.org/mailman/listinfo/beginners