web-dev-qa-db-ja.com

複数のクラス制約を持つHas​​kell型シグネチャ

複数のクラス制約を設定するにはどうすればよいので、AEqで、BNumの場合、どちらかと言えます。

f :: Eq a => a -> b`

または

f :: Num b => a -> b

だから、どうすればEq a =>およびNum b => 同時に?

  • f :: Eq a => Num b => a -> b
  • f :: Eq a -> Num b => a -> b、および
  • f :: Eq a, Num b => a -> b

私が望んでいたことをしませんでした。

27

EqNumは型クラスと呼ばれるため、通常はクラス制約と呼ばれます。

これはどう?

f :: (Eq a, Num b) => a -> b

括弧は重要です。

46
Ashe