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

  • BgirlNilaya

    BgirlNilaya

    29 EKİM 2008
  • majesticdubstep

    majesticdubs

    3 Kasım 2011
  • Miles Fisher

    Miles Fisher

    8 NİSAN 2009