私はfst
とsnd
がある知っているが、なぜ型クラスを使用してこのようなアクセサ関数には、「一般的な」定義は存在しませんか?私は確かになぜHaskellのタプルに「一般的な」アクセサ関数がないのですか?
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
のようなものをお勧めします、あなたは、このためのいくつかの言語拡張を必要とするが、これはずっとそのような方が便利ではないでしょうか?特に、独自のタイプのインスタンスを追加できます。
この及び他のタプルグッズは[タプル(http://hackage.haskell.org/package/tuple)パッケージで提供されています。 – is7s
@ is7sありがとう、私はこれについて知らなかった – Landei
答えはおそらく "誰もタプルをあまり使わない"ためです。とにかく、大きなものではありません。 – MathematicalOrchid