【发布时间】:2011-12-11 02:52:50
【问题描述】:
太好了……
半群、Monoids、Monads、Functors、Lenses、Catamorphisms、Anamorphisms、Arrows...这些听起来都不错,经过一两次(或十次)练习,你就能掌握它们的本质。使用Scalaz,您可以免费获得它们...
但是,就实际编程而言,我发现自己很难找到这些概念的用法。是的,当然我总是在网上找到有人在 Scala 中使用 Monads for IO 或 Lenses,但是……仍然……
我试图找到的是沿着模式的“规定”线的东西。类似于:“在这里,您正在尝试解决这个,解决它的一种好方法是使用镜头这种方式!”
建议?
更新:类似的东西,一两本书,会很棒(感谢 Paul):Examples of GoF Design Patterns in Java's core libraries
【问题讨论】:
-
一种模式可以弥补语言的不足;根据定义,丰富的抽象支持与这种情况相反。这些是用于以定义的方式构建程序的工具 - 关键是您认识到您将编写的过程代码对应于您具有功能支持的处理模式,然后您只需要编写实质性部分,而不是控制代码。
-
您可能对这个类似的问题感兴趣:How to learn Haskell
-
建议通常是从向你学习一个 haskell 序列开始:Functor、Applicative、Monoid、Monad,然后是箭头和拉链。请记住,每个函数只有 1 或 2 个重要函数:fmap 代表 Functor,pure 和 (apply) 代表 Applicative;为 Monad 绑定。
标签: scala functional-programming design-patterns scalaz