关注点分离

时间:2017-05-17 09:14:13

标签: scala functional-programming

我试图在作者提到的第5章中用书FPiS学习scala中的函数式编程:

  

函数式编程的一个主题是关注点和问题的分离   从评估中分离程序描述。

这是什么意思?有人可以举个例子吗?

2 个答案:

答案 0 :(得分:2)

这里我提供了一个手动实现尾递归的示例。 Tail recursion - Scala (any language else)

这是算法描述和评估分离的一个例子。 Recursive trait仅描述了一些递归算法的迭代。 方法interpret对算法的逻辑一无所知,只是运行它直到它完成。 例如,您可以在迭代之间引入延迟或限制迭代次数,而无需更改Recursive中描述的算法。

答案 1 :(得分:1)

关键在于短语

  

从评估中分离程序描述

一个例子是使用由ADT(代表你的DSL的语法)和解释器代表的DSL。因为其他人可能比我更详细地描述了这一点,所以我只想链接到这里的一个例子:http://typelevel.org/cats/datatypes/freemonad.html

那个人使用的免费monad目前是一个有点热门的话题,但在我看来你表现得非常好。