Infix tuple comma query (,)

module Main where data (:%^&) a b = a :%^& b deriving (Show) main = do print $ 18 :%^& (Just 99) print $ (,) 9 10 print $ 9 , 10 The last line in the code above causes a compile error. Why does infix use of the comma (tuple constructor?) function fail without brackets? Thanks, Paul

Am Montag 06 April 2009 17:53:24 schrieb Paul Keir:
module Main where
data (:%^&) a b = a :%^& b deriving (Show)
main = do
print $ 18 :%^& (Just 99)
print $ (,) 9 10
print $ 9 , 10
The last line in the code above causes a compile error.
Why does infix use of the comma (tuple constructor?) function fail without brackets?
Tuples are special baked-in syntax. The parentheses are part of the tuple constructor(s). It may be confusing you that you can use it prefix as well as "aroundfix".
Thanks,
Paul

The prefix notation for
\a b c -> (a,b,c) is (,,)
Without the parentheses, it's not immediately clear whether
foo $ a,b means foo (a,b) or foo (\c -> (a,b,c)) or some other, bigger tuple size.
Anyways, it's just syntax :)
-- ryan
On Mon, Apr 6, 2009 at 9:08 AM, Daniel Fischer
Am Montag 06 April 2009 17:53:24 schrieb Paul Keir:
module Main where
data (:%^&) a b = a :%^& b deriving (Show)
main = do
print $ 18 :%^& (Just 99)
print $ (,) 9 10
print $ 9 , 10
The last line in the code above causes a compile error.
Why does infix use of the comma (tuple constructor?) function fail without brackets?
Tuples are special baked-in syntax. The parentheses are part of the tuple constructor(s). It may be confusing you that you can use it prefix as well as "aroundfix".
Thanks,
Paul
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe

On Mon, Apr 6, 2009 at 8:53 AM, Paul Keir
module Main where
data (:%^&) a b = a :%^& b deriving (Show)
main = do
print $ 18 :%^& (Just 99)
print $ (,) 9 10
print $ 9 , 10
The last line in the code above causes a compile error.
Why does infix use of the comma (tuple constructor?) function fail without brackets?
Thanks,
Paul
When I want a lighter syntax for pairs (when doing a long list of them, e.g.), I often define (&) :: a -> b -> (a,b) a & b = (a,b) and then you can indeed write print $ 1 & 2 (assuming you get precedence right). Alex
participants (4)
-
Alexander Dunlap
-
Daniel Fischer
-
Paul Keir
-
Ryan Ingram