So che c'è fst
e snd
, ma perché non esiste una definizione "generale" per tali funzioni di accesso utilizzando le classi di tipi? Vorrei suggerire qualcosa di similePerché non ci sono funzioni di accesso "generali" per le tuple in 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
Certo, avete bisogno di alcune estensioni del linguaggio di questo, ma non è questo molto più conveniente in quel modo? Soprattutto è possibile aggiungere istanze per i propri tipi.
Queste e altre tuple sono disponibili nel pacchetto [tuple] (http://hackage.haskell.org/package/tuple). – is7s
@ is7s Grazie, non sapevo di questo – Landei
La risposta è probabilmente "perché nessuno usa tuple molto". Certamente non di grandi dimensioni, comunque. – MathematicalOrchid