To jest pytanie o styl kodowania, a nie techniczne.Konflikt nazw między wartościami pól i zakresu lokalnego w Haskell
Często spotykałem się z problemem, w którym używam składni rekordów (mniejszej niż optymalnej) składni Haskell (lub soczewek, problem kończy się tak samo), aby utworzyć typ data
. Kończę się funkcjami typu field accessor nazwanymi po moich polach. Będąc sumiennym programistą, staram się, aby moje nazwy rekordów były znaczące.
W pewnym momencie muszę pobrać pole z mojego typu i zachować jego wartość w zmiennej lokalnej. Często odbywa się to w ramach StateMonad w bloku do
. Pytanie brzmi, jak nazwać zmienną lokalną. Najbardziej oczywista nazwa jest już używana jako akcesorium do obsługi pola. Używam skrótów, które powodują, że mój kod jest mniej czytelny.
Czy istnieje konwencja kodowania Haskella, która rozwiązuje ten problem?
Przykład
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()