相关疑难解决方法(0)

Clojure传感器的行为

随着新的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)

clojure transducer

11
推荐指数
1
解决办法
1188
查看次数

如何通过减少来定义地图,过滤器和反向等操作?

在这篇博客文章"JavaScript中的CSP和传感器"中,作者指出:

首先,我们必须认识到许多数组(或其他集合)操作map,filter并且reverse可以用a来定义reduce.

我的问题是:如何通过减少来定义地图,过滤器和反向等操作?你能在Clojure中提供一些例子吗?

recursion reduce functional-programming clojure fold

2
推荐指数
2
解决办法
374
查看次数