Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell 如果返回a=返回b,那么a=b吗?_Haskell_Monads_Semantics_Equality_Equational Reasoning - Fatal编程技术网

Haskell 如果返回a=返回b,那么a=b吗?

Haskell 如果返回a=返回b,那么a=b吗?,haskell,monads,semantics,equality,equational-reasoning,Haskell,Monads,Semantics,Equality,Equational Reasoning,你能证明如果returna=returnb那么a=b?当我使用=时,我指的是法律和证明意义上的,而不是Eq类意义上的 我所知道的每一个单元格似乎都满足了这一点,我想不出一个有效的单元格,它不会( const a 是一个函子和应用程序,但不是一个单元格。)< /P> < P>不。考虑平凡单元格: data Trivial a = Cow instance Monad Trivial where _ >>= _ = Cow return _ = Cow …更好地称为Const

你能证明如果
returna=returnb
那么
a=b
?当我使用
=
时,我指的是法律和证明意义上的,而不是
Eq
类意义上的


我所知道的每一个单元格似乎都满足了这一点,我想不出一个有效的单元格,它不会(<代码> const a <代码>是一个函子和应用程序,但不是一个单元格。)< /P> < P>不。考虑平凡单元格:

data Trivial a = Cow

instance Monad Trivial where
  _ >>= _ = Cow
  return _ = Cow

…更好地称为
Const()
。为什么我要错过在Haskell程序中编写
Cow
的机会?非平凡的单子呢?@dfeuer:可以使用参数加上遵守单子定律的需要排除中间立场,平凡的单子是唯一违反这一点的情况,其他所有操作都需要使用有效的
a
调用传递给
(>>=)
的函数,否则它将不符合第一个monad定律。-
Cont()
是同构的一个微不足道的单子——这两个观察结果的证明留给您作为练习在comonad案例中有一个双重参数,如果结构上
wa=wb
,则
w
是无人居住的comonad或
a=b
。注意:
Cont Void
Cont()
两者都起作用,但原因略有不同。