我在玩类型类并做了这个:
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 中做到这一点?最好没有扩展?