Kaçınarak Haskell kirlilik ad
Bazıları aynı alan adları, örneğin kullanarak bir program içinde farklı kayıtlar çok kullanıyorum
data Customer = Customer { ..., foo :: Int, ... }
data Product = Product { ..., foo :: Int, ... }
Şimdi erişimci işlevi olarak "" iki kez tanımlanır, "Birden çok bildirimi" hata. foo Bunu önlemenin bir yolu, tam, ya da sadece alanları yapmak istemiyorum) yeniden adlandırma alınan farklı modülleri kullanarak olacaktır.
Haskell bununla ilgili resmi olarak önerilen yolu nedir?
CEVAP
Bu çok kıllı bir sorundur. Birkaç teklif varsabitlemekayıt sistemi. İlgili bir not, TDNR related discussion on cafe bkz.
Mevcut dil özelliklerini kullanarak, en iyi seçenek, iki farklı modüllerde iki tür tanımlama ve nitelikli ithalat yaptığını düşünüyorum. Eğer isterseniz bunun üzerine, bazı tür sınıf makine uygulayabilirsiniz.
Müşteri Olarak.hs
module Customer where
data Customer = Customer { ..., foo :: Int, ... }
Ürün.hs
module Product where
data Product = Product { ..., foo :: Int, ... }
Onları kullanırken, Üçüncü.hs
module Third where
import qualified Customer as C
import qualified Product as P
.. C.foo ..
.. P.foo ..
Henüz recursively dependent modules hakkında sorun çıkmadan çok geç olmaz sanırım.
Haskell: yardımcı fonksiyon adı neden ...
Başlarken ilişkili bir tür şablon Hask...
Nasıl "hata" printfs ile Has...
'Haskell haritası anlamı ne, fmap...
Nasıl Haskell istisnalar çalışır?...