当前位置:  开发笔记 > 编程语言 > 正文

适用于将效果顺序颠倒的仿函数

如何解决《适用于将效果顺序颠倒的仿函数》经验,为你挑选了1个好方法。

鉴于一个应用程序的仿函数f,我有一个想法,Rev f就像制作一个新的应用程序仿函数,f但效果的顺序相反.这里是:

import Control.Applicative

newtype Rev f a = Rev {unRev :: f a}

instance Functor f => Functor (Rev f) where
  fmap f (Rev fx) = Rev (fmap f fx)

instance Applicative f => Applicative (Rev f) where
  pure x = Rev (pure x)
  (Rev ff) <*> (Rev fx) = Rev (pure (\x f -> f x) <*> fx <*> ff)

我的问题是

    这是一个有效的Applicative实例(它是否遵守Applicative法律)?

    这个结构有名字吗?这个模块隐藏在哪里?

Daniel Wagne.. 11

IRC的友好人员指出Backwards了该transformers软件包提供的应用程序.您可能也喜欢(<**>)标准库中提供的运算符.



1> Daniel Wagne..:

IRC的友好人员指出Backwards了该transformers软件包提供的应用程序.您可能也喜欢(<**>)标准库中提供的运算符.

推荐阅读
爱唱歌的郭少文_
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有