DataCinds aracılığıyla ghc 7.4.1'de ve türüne özel işlemleri yapmak için kullanmak istediğim belirli bir yazım tablosunu kullanarak geliştirdiğim bir veri türüm var.Tanıtılan türdeki yazım örnekleri nasıl oluşturulur?
data Type = TInt32 | TInt64 | TInt16
class TypeTraits a where
...
Sonra şöyle terfi tiplerinin typeclass örneklerini oluşturmayı deneyin:
Kind mis-match
The first argument of `TypeTraits' should have kind `*',
but `TInt32' has kind `Type'
In the instance declaration for `TypeTraits TInt32'
belirterek bu sorunu gidermek için çalışıyor:
instance TypeTraits TInt32 where
...
Ben aşağıdaki tipte hataları olsun 'a' türü:
class TypeTraits (a :: Type) where
...
Kind mis-match
Expected kind `ArgKind', but `a' has kind `Type'
In the type `a -> String'
In the class declaration for `TypeTraits'
Tam olarak '' 'alanına ne koyabilirsiniz? "TInt32", yerleşik bir tip değil, bu yüzden "a" değerini kendi başına kullanamaz. CrazyThing :: TypeTraits a => SomeTypeConstructor a' gibi bir şey tahmin ediyorum? Böyle bir şeyin nasıl faydalı olabileceğini hayal etmekte zorlanıyorum, gerçi gerçekten gergin olsam da, bir şekilde faydalı olduğunu düşünebilirim * bir şekilde *. Olabilir. –
Fikir, her bir örnek için özelliklerin sahip olmasıydı. Bu yüzden değer aramıyorum, ama sadece tipeclass ve bunun için orada seçmek istediğim işlevi belirtmek için bir yer tutucu. örneğin: 'class TypeTraits (a :: Type) türünde bir tipOf :: Proxy a -> Int' – Chetan