Проблема с DataKinds

Я создал очень простой пример проблемы, которую яЯ использую GADTs и DataKinds. Мое реальное приложение, очевидно, более сложное, но оно четко отражает суть моей ситуации. Я'Я пытаюсь создать функцию, которая может возвращать любое из значений (T1, T2) типа Test. Есть ли способ сделать это или я попадаю в область зависимых типов? Вопросы здесь кажутся похожими, но я не смог найти (или понять) ответ на мой вопрос от них. Я'Я только начинаю понимать эти расширения GHC. Благодарю.

аналогичный вопрос 1

аналогичный вопрос 2

{-# 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

Ответы на вопрос(2)

Ваш ответ на вопрос