作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想我可能偶然发现了一位将军,虽然有些堕落,monoid action .伪 haskell :
instance (Monoid m, Monoid n) => Act m n where
act mempty x = x -- let's pretend that we can use `mempty` as a pattern
act _ _ = mempty
m
对
n
的操作是设置
n
至
mempty
除非
m
本身是空的。
最佳答案
至少在一般情况下,它看起来不像是一个幺半群 Action 。如果是,我们应该具有以下属性:
-- law 1
act mempty x = x
-- law 2
act (m1 <> m2) x = act m1 (act m2 x)
并且,由于方式
act
在伪实例中定义:
-- property 1
act x y = mempty
when x /= mempty
拍
m
和
n
成为
Sum Int
,这是一个幺半群。
act (Sum 0) (Sum 1)
= { definition of mempty }
act mempty (Sum 1)
= { law 1 }
Sum 1
我们还有
act (Sum 0) (Sum 1)
= { definition of <> on Sum }
act (Sum (-2) <> Sum 2) (Sum 1)
= { law 2 }
act (Sum (-2)) (act (Sum 2) (Sum 1))
= { property 1, given Sum (-2) /= mempty }
mempty
= { definition of mempty }
Sum 0
导致两个不相容的结果。
m
是一个幺半群,其中没有(非平凡)元素具有逆,例如
[a]
, 然后你的
act
看起来像一个适当的 Action 。
关于haskell - 这是一个好的幺半群 Action 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65800060/
我是一名优秀的程序员,十分优秀!