fst
とがあることは知っていますがsnd
、型クラスを使用するそのようなアクセサ関数の「一般的な」定義がないのはなぜですか? 私は次のようなものを提案します
class Get1 p a | p -> a where
get1 :: p -> a
instance Get1 (a,b) a where
get1 (x,_) = x
instance Get1 (a,b,c) a where
get1 (x,_,_) = x
class Get2 p a | p -> a where
get2 :: p -> a
instance Get2 (a,b) b where
get2 (_,x) = x
instance Get2 (a,b,c) b where
get2 (_,x,_) = x
確かに、これにはいくつかの言語拡張が必要ですが、これはその方がはるかに便利ではありませんか? 特に、独自のタイプのインスタンスを追加できます。