Haskell'deki cebirsel DT'leri öğreniyorum. Benim yapmak istediğim, mevcut olanı "genişleten" yeni bir ADT yaratmak. İstediğimi nasıl ifade edeceğimi, bir alternatif örüntüyü özümseyebileceğini veya bir çözümü özebileceğini bulamıyorum. Farklı tipler olmasını istiyorum, ancak sadece yapıştırma ve yapıştırma aptalca bir çözüm gibi yapıştırarak. Aşağıdaki kod, aradığım şeyi en iyi açıklıyor.Haskell'in cebirsel veri tipleri: "pseudo-extend"
data Power =
Abkhazia |
-- A whole bunch of World powers and semi-powers
Transnistria
deriving (Eq, Show)
data Country =
--Everything in Power |
Netural |
Water
deriving (Eq, Show)
Düzenleme: Ben
let a = Abkhazia :: Country
değil
let a = Power Abkhazia :: Country
Bunu yapmak için nedenler genellikle bir OO-y düşünce düşüncesinden geliyor ;-), ancak PowerCountry için bir Güç tutan Ülke içinde her zaman bir kurucu ekleyebilirdiniz. –
Hmm Abhazya ve Transdinyester'in bir Haskell koduna nasıl geldiğini sorabilir miyim? Bu iki yerle nasıl bağlantılısınız? Bir çeşit oyun üzerinde mi çalışıyorsun? Hangi ülkedensin? –
Abhazya ve Transdinyester http://en.wikipedia.org/wiki/List_of_sovereign_states Sadece Haskell öğrenme ve pratik bir fikir geldi am "Diğer devletler" listesinde ilk ve son bulunmaktadır. Sanırım bir oyun olabilir ama henüz niyetim yok. –