【问题标题】:Is there a class with the function `(m a -> n b) -> t m a -> t n b`是否有一个类具有函数`(m a -> n b) -> t m a -> t n b`
【发布时间】:2022-10-13 11:14:33
【问题描述】:

这是一堂课,我打电话给BlahMap

class BlahMap t where
  blahMap :: (m a -> n b) -> t m a -> t n b

这是BlahMap 的一个实例:

instance BlahMap (ReaderT r) where
  blahMap f = ReaderT . fmap f . runReaderT

Haskell 生态系统中是否存在执行此操作的现有类?或者,我可以只写一个函数blahMap 与现有的类在说mtl 或类似的东西?还是我真的发明了一些新东西?

【问题讨论】:

    标签: haskell monad-transformers


    【解决方案1】:

    来自类MFunctor 的函数hoist,包mmorph 是我自己问题的答案。

    【讨论】:

    • 完全正确,hoist 的类型为(forall a. m a -> n a) -> t m b -> t n b,这与您在 OP 中所要求的不完全相同。话虽如此,hoist 可能是您正在寻找的,并且是非常有用的功能要知道,所以我喜欢这个答案。只是值得注意的是类型不确切地排队。
    猜你喜欢
    • 2012-04-07
    • 2018-01-12
    • 2018-10-21
    • 1970-01-01
    • 1970-01-01
    • 2021-10-15
    • 2021-08-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多