Drkcore

21 06 2012 Haskell Tweet

Haskellで(,)が関数だと知ったのだが中置演算子として使えないの?

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'

確かにデータコンストラクタですね。だから中置記法が使えないってことでいいのかな?

ついでに文法への参照も教えてもらったので後で読んでみる。

ProductName Real World Haskell―実戦で学ぶ関数型言語プログラミング
Bryan O'Sullivan
オライリージャパン / 3990円 ( 2009-10-26 )


About

  • もう5年目(wishlistありマス♡)
  • 最近はPythonとDeepLearning
  • 日本酒自粛中
  • ドラムンベースからミニマルまで
  • ポケモンGOゆるめ

Tag

Python Deep Learning javascript chemoinformatics Emacs sake and more...

Ad

© kzfm 2003-2021