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