随着新的clojure 1.7我决定了解我可以使用传感器的位置.我明白他们能给予什么好处,但我找不到正常的编写自定义传感器的例子.
好的,我试着测试发生了什么.我打开了clojure文档.并且有一些例子xf用作参数.第一:这个xf或xfrom是什么意思?这个东西产生了身份传感器
(defn my-identity [xf]
(fn
([]
(println "Arity 0.")
(xf))
([result]
(println "Arity 1: " result " = " (xf result))
(xf result))
([result input]
(println "Arity 2: " result input " = " (xf result input))
(xf result input))))
Run Code Online (Sandbox Code Playgroud)
我[result input]从文档示例中获取了变量的命名.我认为它在减少功能的地方result是减少部分并且input是新的集合元素.
所以,当我(transduce my-identity + (range 5))得到结果时10,我期待的结果.然后我读到了eduction,但我无法理解它是什么.无论如何,我做了(eduction my-identity (range 5))并得到了:
Arity 2: nil 0 = nil
Arity 2: nil 1 = nil …Run Code Online (Sandbox Code Playgroud) 在这篇博客文章"JavaScript中的CSP和传感器"中,作者指出:
首先,我们必须认识到许多数组(或其他集合)操作
map,filter并且reverse可以用a来定义reduce.
我的问题是:如何通过减少来定义地图,过滤器和反向等操作?你能在Clojure中提供一些例子吗?