0
使用lenses
自動鏡頭生成方法我結束了與HasX
類型的若干類型的類:如何結合幾種類型約束?
class HasPositionX s a | s -> a where
positionX :: Lens' s a
class HasPositionY s a | s -> a where
positionY :: Lens' s a
這當然是2D矢量類型的一部分。現在我正在尋找一種方式,這些約束合併成一個,基本上說IsVector s a
可用這樣的:通過定義一個只包含一個新的記錄爲此
showVec :: (Num a, IsVector v a) => v -> String
showVec a = show (view positionX a) ++ "," ++ show (view positionY a)
'type IsVector v a =(HasPosX v a,HasPosY v a)' – user2407038
那,使用'ConstraintKinds'擴展? – fho
@ user2407038你可以把它變成一個答案。 – chi