1
我想使用創建的操作員「幻影鍵入」單位:在功能定義中使用的實例圖案
newtype Length (a::UnitLength) b = Length b deriving (Eq)
data UnitLength = Meter
| KiloMeter
| Miles
deriving (Eq,Show)
class OperAdd a b c where
(<+>) :: a -> b -> c
instance Num val => OperAdd (Length a val) (Length b val) (Length c val) where
(<+>) (Length la) (Length lb) = if a == b
then Length (la+lb)
else ...
爲了避免重複實例聲明爲每個單位,我想用的類型a
b
和c
在實例聲明中進行自動單位轉換。
是否可以在我的操作符定義中使用a
b
和c
?
難道是你正在尋找的功能是「TypeFamilies」 - 我會以此爲藉口來鏈接我最喜歡的haskell blogpost https://www.fpcomplete.com/school/to-infinity-and-超越/接機的星期幾/型家庭,和口袋妖怪 – epsilonhalbe