Quello di cui sto parlando è che non è possibile definire:Perché GHC Haskell non supporta i nomi dei parametri dei record sovraccaricati?
data A = A {name :: String}
data B = B {name :: String}
So che GHC solo desugars questo per funzioni semplici e il modo idiomatico per risolvere questo sarebbe:
data A = A {aName :: String}
data B = B {bName :: String}
class Name a where
name :: a -> String
instance Name A where
name = aName
instance Name B where
name = bName
Dopo averlo scritto non mi piace più di tanto ... non è possibile che questa tipizzazione faccia parte del processo di desugaring?
Il pensiero mi è venuta quando stavo scrivendo alcuni Aeson JSON parsing. Dove sarebbe stato troppo facile solo per derive the FromJSON
instances per ogni tipo di dati, ho dovuto scrivere tutto a mano (attualmente> 1k linee e conteggio). Avere nomi come name
o semplicemente value
in un record di dati non è così raro.
http://www.haskell.org/haskellwiki/Performance/Overloading indica che l'overloading delle funzioni introduce un sovraccarico di runtime. Ma in realtà non vedo perché il compilatore non sarebbe in grado di risolverlo al momento della compilazione e dare loro nomi diversi internamente.
This SO question from 2012 più o meno stati storico motivi e punti a un thread di posta elettronica del 2006. È cambiato qualcosa di recente?
Anche se ci sarebbe un sovraccarico di runtime, la maggior parte delle persone non si preoccuperebbe perché la maggior parte del codice difficilmente è critica dal punto di vista delle prestazioni.
C'è qualche estensione di lingua nascosta che in realtà consente questo? Ancora una volta non sono sicuro ... ma penso che Idris lo faccia davvero?
A parte: qualcuno potrebbe aggiungere un tag Idris a SO e questa domanda? Forse qualcuno da quella comunità potrebbe anche elaborare. – fho
Congratulazioni per essere la prima domanda di idratazione. Se vuoi saperne di più sull'argomento c'è una pagina sul [ghc wiki] (http://hackage.haskell.org/trac/ghc/wiki/Records) e la [conversazione su reddit] (http: // www.reddit.com/r/haskell/comments/kgd4g/the_records_problem_in_haskell_help_build_a/). – Davorak
Grazie per i collegamenti. I documenti GHC non sembrano avere un buon posizionamento nei risultati di Google. – fho