I am trying to make use of some of GADT parameter from runtime, assuming that I have used DataKinds extension to allow promoting data to types. i.e. having
data Num = Zero | Succ Num
data Something (len :: Num) where
Some :: Something len
I would like to have function
toNum :: Something len -> Num
That for any Some :: Something n will return n:
toNum (s :: Something n) = n
Which is invalid in Haskell. Is it possible to do so?