3
這是一個數據類型代表真實世界的物理單位:如何獲取類型參數?
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。