私は型クラスをいじっていて、これを作りました:
class Firstable f where
fst :: f a -> a
class Secondable f where
snd :: f a -> a
次に、の実装を追加しようとしたところ、次の(,)
ことができることに気付きました。
instance Secondable ((,) a) where
snd (x,y) = y
私はこれがうまくいくと確信しています。なぜなら、その型を持っSecondable
ている種類(* -> *)
が必要だからです。しかし、バインドされた変数がどこにあるのかを実装する((,) a)
方法がわかりません。Firstable
((,) * a)
*
instance Firstable (flip (,) a) where ...
Haskellでこれを行う方法はありますか? できれば拡張子なしですか?