Проблема с DataKinds
Я создал очень простой пример проблемы, которую яЯ использую GADTs и DataKinds. Мое реальное приложение, очевидно, более сложное, но оно четко отражает суть моей ситуации. Я'Я пытаюсь создать функцию, которая может возвращать любое из значений (T1, T2) типа Test. Есть ли способ сделать это или я попадаю в область зависимых типов? Вопросы здесь кажутся похожими, но я не смог найти (или понять) ответ на мой вопрос от них. Я'Я только начинаю понимать эти расширения GHC. Благодарю.
{-# LANGUAGE GADTs, DataKinds, FlexibleInstances, KindSignatures #-}
module Test where
data TIdx = TI | TD
data Test :: TIdx -> * where
T1 :: Int -> Test TI
T2 :: Double -> Test TD
type T1 = Test TI
type T2 = Test TD
prob :: T1 -> T2 -> Test TIdx
prob x y = undefined
---- вот ошибка ---- Test.hs: 14: 26:
Kind mis-match
The first argument of `Test' should have kind `TIdx',
but `TIdx' has kind `*'
In the type signature for `prob': prob :: T1 -> T2 -> Test TIdx