Это тип данных представляет реальный мир блок физики:Как получить параметры типа?
import qualified Prelude as P
import Prelude hiding ((+), (*), (/), (-), Int, pi)
data Int = Zero | Succ Int | Pred Int
data Unit :: Int -> Int -> Int -> * where
U :: Double -> Unit m s kg
(+) :: Unit m s kg -> Unit m s kg -> Unit m s kg
(-) :: Unit m s kg -> Unit m s kg -> Unit m s kg
(*) :: Unit m1 s1 kg1 -> Unit m2 s2 kg2 -> Unit (Plus m1 m2) (Plus s1 s2) (Plus kg1 kg2)
(/) :: Unit m1 s1 kg1 -> Unit m2 s2 kg2 -> Unit (Minus m1 m2) (Minus s1 s2) (Minus kg1 kg2)
и шоу экземпляра:
instance Show (Unit m s kg) where
show (U a) = show a
Таким образом, я могу показать только значение, но не тип (это время или тип скорости или длины). Интересно, как получить параметры типа m, s, kg, а затем показать его?
Полный код here.