Ash*_*ary 4 monads haskell types scala functor
我已经研究Scala(以及扩展的Haskell)一段时间了,我完全被他们的类型系统和功能范例所捕获.最近我偶然发现了"类型级别编程",并被拖入了Functors和其他我没有听说过的东西(除了Monad,我知道这是一种神秘的东西,但不知道该使用什么它!).我研究了Haskell中的概念(并且顺便通过它的类型系统和类型推理能力而被迷惑了),我有一种对纯粹技术层面的Functor,PointedFunctor,ApplicativeFunctor或Monoid类型意味着什么的坚定把握. (我仍然不知道Monad在技术水平上是什么样的)但是我觉得自己像个白痴,因为我看不到所有这些用处,除非可能获得了一些概念的良好分类(?).这些东西有用吗?为什么生活如此复杂?为什么要研究这些东西并将它们分类为不同的类?
为什么生活如此复杂?
他们都在那里让生活更简单!
首先,它们使我们编写的代码更清晰,更清晰.
其次,它们增加了我们的表现力,而没有增加真正的新语言特征.例如,Monads允许您使用标准语法来表达复杂的计算上下文,Functors允许您以标准方式思考和编程数据结构,而Applicative Functors可以让您像对待简单数据一样简单地处理有效或复杂的计算上下文,让您在纯数据之外干净地使用功能范例.
它们都有助于代码重用,并帮助我们理解彼此的代码,因为它们为我们提供了一种思考事物的标准方法.
一旦你习惯了它们,你就不想没有它们!
它们都是抽象的.例如.monoid是支持零元素和加法的东西(必须是关联的).例子是整数,列表,字符串等.我认为对于所有这些不同类型都有一个共同的"接口"是相当不错的.
那他们为什么有用呢?例如,您可以为所有幺半群编写通用求和函数.不是为字符串,整数等编写一个,而是只编写一个通用函数.我认为这非常有用.
| 归档时间: |
|
| 查看次数: |
452 次 |
| 最近记录: |