Я новичок в Haskell, поэтому я, вероятно, упускаю что-то очевидное, но в чем здесь проблема?
Библиотека singletons предоставляет экземпляр Sing
для вида *
в import Data.Singletons.TypeRepStar
.
Семейство данных Sing
определяется следующим образом.
data family Sing (a :: k)
и экземпляр *
определяется как..
data instance Sing (a :: *) where
STypeRep :: Typeable a => Sing a
Я пытаюсь воспроизвести минимальную версию этого, используя следующее...
{-# LANGUAGE GADTs
, TypeFamilies
, PolyKinds
#-}
module Main where
import Data.Typeable
data family Bloop (a :: k)
data instance Bloop (a :: *) where
Blop :: Typeable a => Bloop a
main :: IO ()
main = putStrLn "Hello, Haskell!"
Но я получаю следующую ошибку...
Main.hs:12:3: error:
• Data constructor ‘Blop’ returns type ‘Bloop a’
instead of an instance of its parent type ‘Bloop a’
• In the definition of data constructor ‘Blop’
In the data instance declaration for ‘Bloop’
|
12 | Blop :: Typeable a => Bloop a
| ^