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

  • Orson Wang

    Orson Wang

    28 EKİM 2006
  • PlayStation

    PlayStation

    16 Aralık 2005
  • sWooZie

    sWooZie

    9 ŞUBAT 2006