RWHを読んでいたら(,)が関数だと知った
Prelude> :t (,) (,) :: a -> b -> (a, b) Prelude> (,) 'a' 'b' ('a','b')
期待通りタプルを返す。で括弧でくくられているってことは中置記法使えるのかなと思いやってみた
Prelude> 'a' , 'b' <interactive>:33:5: parse error on input `,'
これはparse error。
なんで?
2012.06.21 追記
@ksmakotoに(,)はデータコンストラクタじゃないかと指摘された。
Prelude> :i (,) data (,) a b = (,) a b -- Defined in `GHC.Tuple' instance (Bounded a, Bounded b) => Bounded (a, b) -- Defined in `GHC.Enum' instance (Eq a, Eq b) => Eq (a, b) -- Defined in `GHC.Classes' instance (Ord a, Ord b) => Ord (a, b) -- Defined in `GHC.Classes' instance (Read a, Read b) => Read (a, b) -- Defined in `GHC.Read' instance (Show a, Show b) => Show (a, b) -- Defined in `GHC.Show'
確かにデータコンストラクタですね。だから中置記法が使えないってことでいいのかな?
ついでに文法への参照も教えてもらったので後で読んでみる。