Parametrelerden birinin daha iyi bir tür (* -> *
) olduğu bir polimorfik türüm var.Yüksek kinder tipi değişkenlerle türetme
data Tricky m = Tricky { numbers :: m Int, genesis :: m String }
Arcane ve güvensiz dil uzantıları kullanmadan bu tür örneklerin örneklerini elde etmenin genel bir yolu var mı?
deriving instance Show (m Int) => Show (Tricky m)
Ama GHC sonra örneği kafasına daha küçük olması kısıtlaması şikayet etmekte ve UndecidableInstances
yönünde beni işaret:
StandaloneDeriving
sağlayan çalıştı.
Özetlemek gerekirse:
1. Ben sadece bu tavsiye ile birlikte gitmeli, ya da daha iyi bir yolu vardır?
2. Bu işlemi kolaylaştırmak için herhangi bir öneriniz var mı?
3. Bir şekilde 'yüksek nazlı' örnekleri türetmek isteyen bir yanlış yöne mi? o UndecidableInstances
hakkında güvensiz bir şey yok yerine birkaç beton türleri (örn. Vector
, []
, Set
)