haskell - 同构对的单子实例的已知/已建立用例
问题描述
现在我有一个好奇心,对于一对同质类型的 monad 实例是否有任何已知的用例?
以下是它的实例:
data Pair a = Pair a a deriving Show
instance Functor Pair where
fmap f (Pair a b) = Pair (f a) (f b)
instance Applicative Pair where
pure a = Pair a a
Pair f g <*> Pair x y = Pair (f x) (g y)
instance Monad Pair where
m >>= f = joinPair (f <$> m)
joinPair :: Pair (Pair a) -> Pair a
joinPair (Pair (Pair x _) (Pair _ y)) = Pair x y
解决方案
你与/Pair a
同构:Reader Bool a
Bool -> a
to (Pair f t) = \b -> if b then t else f
from f = Pair (f False) (f True)
因此,Reader monad的任何用例也是您的 monad 的潜在用例。这些数据类型的通用术语是可表示函子。
推荐阅读
- r - 在 R 中向量化迭代函数的最佳方法是什么?
- tensorflow - 修复 Keras/TensorFlow 卷积滤波器中的权重总和
- sublimetext3 - Sublime 或 Atom - 通过侧边栏打开某个文件夹中的所有文件
- go - 将数据从 Datastore 传递到 http.Writer
- firebase - Firebase:检查已验证电子邮件地址的域
- php - 在 Twig/Timber 中获取 WooCommerce 产品属性并调用 PHP 方法
- html - 无法让滚动条显示在溢出文本上
- amazon-ec2 - 当需要尽快完成单元工作时,管理 EC2 实例的最佳方式是什么?
- macos - MacOS Mojave UNNotificationAttachment 缩略图未显示在通知中
- html - 为什么 CSS 效果只出现在 JSP 预览上而不出现在浏览器上?