Lui*_*las 7 haskell category-theory
我刚刚发现自己编写了如下代码:
import Prelude hiding (id, (.))
import Control.Category
import Control.Monad ((<=<))
-- | Intended law:
--
-- map forward . backward == id
--
data Invertible a b =
Invertible { forward :: a -> b
-- Maybe switch from [a] to Monad m => m a? (Requires RankNTypes)
, backward :: b -> [a] }
instance Category Invertible where
id = Invertible id (:[])
f . g = Invertible { forward = forward f . forward g
, backward = backward g <=< backward f
}
Run Code Online (Sandbox Code Playgroud)
我试图在关于Haskell的页面中搜索Google使用术语"反向图像"或"preimage",但没有运气.你们有没有走过我现在所走过的路,发现了这片土地?
我已经解决了这Invertible a不是一个Functor,因为当你试图实现时fmap :: (a -> r) -> Invertible a b -> Invertible a r,没有合理的价值backward . fmap f(没有合理的类型功能(a -> r) -> (b -> [a]) -> r -> [a]).但也许还有一些其他有趣的操作,我只是不知道.