No, questo non è attualmente supportato. L'approccio standard consiste nel prefissare ogni campo con qualcosa di unico per il particolare tipo di dati, ad es. p2x
, p2y
, p3x
ecc
La ragione ciò non è supportato è che ciascuna di campo di record genera implicitamente una funzione "selettore", ad esempio x :: Point2 -> Float
. Avere due campi con lo stesso nome nello stesso ambito genererebbe uno scontro.
Questo è un bugbear di vecchia data per molte persone e verrà risolto dall'imminente estensione della lingua OverloadedRecordFields
, che si spera faccia parte di GHC 7.12 (previsto per l'inizio del 2016).
Se abilitata, questa estensione consentirà lo stesso nome di campo da utilizzare in più record. Il selettore di campo avrà un tipo sovraccarico che verrà generalmente risolto per tipo di inferenza.
fonte
2014-06-22 14:37:11
Peccato non abbiamo una soluzione per questo caso. – jiyinyiyong
... ma qual è lo scopo di "DisambiguateRecordFields"? –