我尝试编写一个比较运算符,用于两个类型为lens getters的比较,并且它可以判断大于等于。
(.>=.) :: Ord a => Getting a s a -> Getting a s a -> Getting Bool s Bool
我有一个可行的解决方案,左侧是getter函数,右侧是数值(运算符.>=
右侧没有.
)
left .>= right = left . to (>= right)
我试过了
left .>=. right = (>=) <$> use left <*> use right
但它有类型
(.>=.) :: (Ord a, MonadState s f) => Getting a s a -> Getting a s a -> f Bool
如何获得所需的返回类型Getting Bool s Bool
,而不是f Bool
?