这里有一段说明:
转换器的组成从右向左运行,但构建从左到右运行的转换堆栈(筛选发生在本例中的映射(。
我不明白。这意味着什么:转换器的组成从右到左(在本例中从底部开始(
(def xf
(comp
(filter odd?)
(map inc)
(take 5)))
对我来说,我所看到的只是这个组合将如何执行,它将过滤、映射和获取。自下而上的构图顺序有什么意义。这似乎是文章中的一个重要观点,所以我尽量不漏掉这一点。
我会尝试快速回答;回避问题:
编译器知道map
后面跟一个take
。因此,展开组合来编译它,它将依次定义map
,然后定义take
函数,尽管执行图从底部开始。