Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/10.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 控制类别有什么好处?_Haskell_Math_Category Abstractions - Fatal编程技术网

Haskell 控制类别有什么好处?

Haskell 控制类别有什么好处?,haskell,math,category-abstractions,Haskell,Math,Category Abstractions,如果我发现某个东西是Monoid或Monad,我就会使用各种有趣的函数,比如foldMap,sequence甚至mapM。他们让我快乐 如果我发现某物属于类别,我会得到什么?除了重载id和(.))之外,我还有什么乐趣吗 除了超载id和(.)之外,我还能得到什么乐趣吗 那么,你也(应该)得到与他们相关的法律: "identity/left" forall p . id . p = p "identity/right" forall p .

如果我发现某个东西是
Monoid
Monad
,我就会使用各种有趣的函数,比如
foldMap
sequence
甚至
mapM
。他们让我快乐

如果我发现某物属于
类别
,我会得到什么?除了重载
id
(.)
)之外,我还有什么乐趣吗

除了超载id和(.)之外,我还能得到什么乐趣吗

那么,你也(应该)得到与他们相关的法律:

"identity/left" forall p .
                id . p = p
"identity/right"        forall p .
                p . id = p
"association"   forall p q r .
                (p . q) . r = p . (q . r)
作为旁注:
你没有得到像
mapM
foldMap
这样的有趣功能的原因是,说某样东西是一个类别实际上对它说得很少。我想最有用的函数是在
Control.Category
中定义的函数,它们有时使代码更容易阅读:
>
控件。Category
只是
控件.Arrow
的基础工作,而这正是获得有趣函数的地方

附录:“维基百科说”范畴理论被认为是“一般抽象的胡说八道”(这是一个很好的方式),因为它非常抽象。与所有抽象一样,有一个折衷:要么你可以用它们做很多事情,要么你发现很多事情都是它们的实例。类别尽可能地朝着“许多事物都是它们的实例”的折衷方向发展:几乎每一个数学概念都有一个潜在的类别。你为所有这些想法之间的共同术语付出的代价是,仅仅将某个东西称为一个类别并不能给你提供太多的信息。如果你想要更多,你必须在单词上挂上形容词:“cartesion封闭类别”或“编织单倍体类别”,等等。