什么是"好好组合"意味着什么?

let*_*nje 15 programming-languages functional-programming clojure composition

很多次,我遇到过X形式/不构成的形式的陈述.

我记得我最近读过的几个例子:

  • 宏不能很好地构成(上下文:clojure)
  • 锁不能很好地构成(上下文:clojure)
  • 命令式编程并不构成......等等.

我想了解可编组性在设计/读/写代码方面的含义?例子很好.

Chu*_*uck 10

"组合"功能基本上只是意味着将两个或多个功能结合在一起,形成一个以有用的方式组合其功能的大功能.基本上,您定义一系列函数并将每个函数的结果输入到下一个函数中,最后给出整个过程的结果.Clojure提供了comp为您完成此功能的功能,您也可以手动完成.

与创建方式中的其他函数链接的函数通常比只能在特定条件下调用的函数更有用.例如,如果我们没有该last函数并且只有传统的Lisp列表函数,我们可以很容易地定义last(def last (comp first reverse)).看看 - 我们甚至不需要defn或提及任何参数,因为我们只是将一个函数的结果传递给另一个函数.例如,如果reverse采取了就地修改序列的必要路线,这将不起作用.宏也有问题,因为你无法将它们传递给像comp或等函数apply.