Enum sınıfı için Haskell türetme mekanizmasının uzantıları olduğunu söyleyebilir misiniz? “Nullary constructors” davası dışında birçok makul durum var. Bu konuda herhangi bir eser var mı?Haskell'de GADT'lerin numaralandırılması
6
A
cevap
4
Gerçekten GADT'ye ihtiyacınız var mı? Ya da sadece kısıtlamaları sadece nulet yapıcılarla düz bir numaralandırma türüne kaldırmak mı istiyorsunuz? İkincisi ise, o zaman seçenekler var. Biri, GHC'nin Generic
mekanizmasını uygun bir jenerik numaralandırma sınıfının uygulanması ile birlikte kullanmaktır. Bu, generic-deriving
paketinde bulunur.
{-# LANGUAGE DeriveGeneriC#-}
import Generics.Deriving
data Tree a = Leaf a | Node (Tree a) (Tree a)
deriving (Show, Generic)
instance GEnum Bool
instance GEnum a => GEnum (Tree a)
test :: [Tree Bool]
test = take 10 genum
Şimdi test
şu listesi::
[ Leaf False
, Node (Leaf False) (Leaf False)
, Leaf True
, Node (Leaf False) (Node (Leaf False) (Leaf False))
, Node (Node (Leaf False) (Leaf False)) (Leaf False)
, Node (Leaf False) (Leaf True)
, Node (Node (Leaf False) (Leaf False)) (Node (Leaf False) (Leaf False))
, Node (Leaf True) (Leaf False),Node (Leaf False) (Node (Leaf False) (Node (Leaf False) (Leaf False)))
, Node (Node (Leaf False) (Leaf False)) (Leaf True)
]
genum
Bu uygulama ürününü birleştirmek köşegenleştirmeyi kullanır İşte bir örnek. Bu, her değerin gerçekten listede bir yerde göründüğünü garanti eder, ancak sırayla şaşırtıcı bir siparişe yol açabilir.
İlgili konular
- 1. Karışık öğelerden oluşan bir sütunun numaralandırılması
- 2. İç içe geçmiş başlıkların ve listelerin numaralandırılması
- 3. Çalışma zamanında .NET derleme kaynaklarının numaralandırılması
- 4. array_unique ve sonra yeniden numaralandırılması tuşları
- 5. Gruplandırılmış Satırları olan SSRS Tablosunda Otomatik Satır Numarası
- 6. Yüklü bir yazı tipinin O/S dosya adı nasıl belirlenir?
- 7. Yankı şey
- 8. Python
- 9. Tekil bir dosya dökümü belgesinde çapraz referanslama
Oh, düşündüğüm buydu. Teşekkür ederim. –