Dies ist eine Coding-Stil-Frage und nicht eine technische Frage.Namenskonflikt zwischen Feldwerten und lokalem Gültigkeitsbereich in Haskell
Ich habe häufig ein Problem festgestellt, bei dem ich Haskell (weniger als optimal) Datensatzsyntax (oder Objektive, das Problem endet die gleiche), um einen data
Typ zu erstellen. Ich lande mit Feldzugriffsfunktionen, die nach meinen Feldern benannt sind. Als gewissenhafter Programmierer versuche ich, meine Feldnamen sinnvoll zu machen.
Irgendwann später muss ich ein Feld aus meinem Typ und behalten Sie seinen Wert in einer lokalen Variablen. Dies geschieht oft innerhalb eines StateMonad in einem do
Block. Die Frage ist, wie ich die lokale Variable nenne. Der offensichtlichste Name wird bereits als Feldzugriffsgerät verwendet. Ich finde mich selbst mit Abkürzungen, die dazu neigen, meinen Code weniger lesbar zu machen.
Gibt es eine Haskell-Codierungskonvention, die dieses Problem löst?
Beispiel
data Qaax = Qaax {
foo :: SomeFoo
, bar :: SomeBar
, ...
}
baz :: (MonadState Qaax m) => (...) -> m()
baz (...) = do
f <- gets foo -- I'd really like to use something more descriptive then
-- `f` but `foo` is already taken.
...
return()