Đây là câu hỏi kiểu mã hóa chứ không phải là câu hỏi kỹ thuật.Đặt tên xung đột giữa giá trị trường và phạm vi địa phương trong Haskell
Tôi thường gặp phải sự cố khi sử dụng cú pháp bản ghi (ít nhất là tối ưu) của haskell (hoặc ống kính, sự cố kết thúc giống nhau) để tạo loại data
. Tôi kết thúc với các hàm truy cập trường được đặt tên theo các trường của tôi. Là một lập trình viên tận tâm, tôi cố gắng làm cho tên trường hồ sơ của tôi có ý nghĩa.
Tại một thời điểm nào đó sau đó, tôi cần lấy trường ra khỏi loại của mình và giữ giá trị của nó trong biến cục bộ. Điều này thường được thực hiện trong một StateMonad trong một khối do
. Câu hỏi đặt ra là tôi gọi biến cục bộ là gì. Tên rõ ràng nhất đã được dùng làm accessor trường. Tôi thấy tự mình sử dụng các từ viết tắt có xu hướng làm cho mã của tôi ít đọc được hơn.
Có quy ước mã hóa Haskell giải quyết vấn đề này không?
Ví dụ
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()