SORU
23 Kasım 2010, Salı


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
23 Kasım 2010, Salı


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.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Doc Adams

    Doc Adams

    20 HAZİRAN 2007
  • hockeywebcasts

    hockeywebcas

    31 EKİM 2012
  • Attempts at least

    Attempts at

    1 Ocak 2007