Başlığın yeterince açıklayıcı olup olmadığından emin değilim, ancak Haskell'de pek tecrübem yok. BenTip tanımı (Haskell) tipinin tanımı (Haskell)
data Pair a b = Pair a b
sahip
class MyTypeclass (ctor a b) where
funct :: (ctor a b) -> a
varsayarak (ctor :: * -> * -> *
, a :: *
, b :: *
varsayılarak) ve bu gibi, kurucu parametrize edildiği tipine bağlıdır, iki parametre tipi kurucular için typeclass olmak için
o (birden parametre tipi sınıfları olmadan mümkündür
instance MyTypeclass (Pair a b) where
funct :: Pair a b -> a
funct (Pair x _) = x
gibi bir şey yapabilmek bunun nedeni' çok güçlü - sadece benim tipecamın parametrized olduğu türünü bozmak istiyorum)?
teşekkürler! İşe yarıyor. Ama ben orada gerçekleşen tür çıkarım miktarı hakkında oldukça endişe duyuyorum - iki kurucu sınıfları ile iki parametreli bir yazım nasıl yapabilirim? Hangi türden geleceğini belirtmenin bir yoluna ihtiyacım var. –
Endişenizi anladığımdan emin değilim - ama unutmayın: Sınıf değişkeni (burada "ctor") her sınıf işlevi imzasında görünmeli ve doğru türdeki argümanlara uygulanmalıdır. Bu nedenle, tüm tipler girişlerle sabitlenir. – Ingo
Daha basit bir soru o zaman: "C Pair nerede" içinde "funct" ifadesinin açık tip imzasını verebilir misiniz? –