作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在寻找一种将自然变换定义为传递给函数的简单参数的方法。
让我们以一个简单的函数为例:
mapK :: (m Int -> IO Int) -> Kleisli m Bool Int -> Kleisli IO Bool Int
mapK toIO kleisli = Kleisli (\bool -> toIO $ runKleisli kleisli bool)
mapK :: (m a -> IO a) -> Kleisli m Bool Int -> Kleisli IO Bool Int
mapK toIO kleisli = Kleisli (\bool -> toIO $ runKleisli kleisli bool)
Int
不是
a
(这并不奇怪)。
class NaturalTransformation f g where
transform :: f a -> g a
mapK :: (NaturalTransformation m IO) => Kleisli m Bool Int -> Kleisli IO Bool Int
最佳答案
当然,您只需要要求实现者而不是调用者来选择变量:
{-# LANGUAGE RankNTypes #-}
mapK :: (forall a. m a -> IO a) -> Kleisli m Bool Int -> Kleisli IO Bool Int
-- implementation is exactly as before
mapK toIO kleisli = Kleisli (toIO . runKleisli kleisli)
-- OR, with TypeApplications also on,
mapK toIO = coerce @(_ (Bool -> _ Int)) (toIO.)
关于haskell - 自然变换作为 Haskell 中的一个论点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57467085/
这个问题在这里已经有了答案: 8年前关闭。 Possible Duplicate: How to use R's ellipsis feature when writing your own func
当我尝试指定我想要 pull 最新版本的 pod 时,根据 Cocoapods official docs ,我将它列在我的 podfile 中,如下所示: pod 'ReactiveCocoa',
我是一名优秀的程序员,十分优秀!