小编haw*_*eye的帖子

什么是Scala的seq.reduceOption的Clojure等价物?

在Scala的Collections库中 - 我们看到具有reduceOption方法的Seq类:

def reduceOption[A1 >: A](op: (A1, A1) ? A1): Option[A1]
Run Code Online (Sandbox Code Playgroud)

使用指定的关联二元运算符减少此序列的元素(如果有)."

这有另一个很好的解释:

这里谈到reduceOption保存一天!如果reduce因为集合是空会失败,它只会返回一个None,而是和一个Some(returnvalue)用于非空的集合.

我的问题是:Scala的seq.reduceOption的Clojure相当于什么?

reduce scala clojure

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

Haskell的Foldable和Traversable相当于Clojure中的一个序列吗?

在Haskell中,我们看到Haskell前奏中的Foldable和Traversable 登陆.

这些都对序列进行操作.

Prelude Data.Sequence> map (\n -> replicate n 'a') [1,3,5]
["a","aaa","aaaaa"]
Prelude Data.Sequence> fmap (\n -> replicate n 'a') (1 <| 3 <| 5 <| empty)
fromList ["a","aaa","aaaaa"]
Run Code Online (Sandbox Code Playgroud)

我的问题是Haskell的Foldable和Traversable只相当于Clojure中的一个序列

假设:

haskell clojure sequence traversable foldable

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

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

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

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

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

recursion reduce functional-programming clojure fold

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

在Clojure中有没有找到地图中匹配键和值的惯用方法?

我正在尝试从地图中找到匹配的键和值对.我正在使用以下代码:

(defn matches? [m k v]
  (let [val (k m)]
    (= val v)))

my-demo.core=> (matches? {:a 1 :b 2} :b 2)
true
my-demo.core=> (matches? {:a 1 :b 2} :b 3)
false
Run Code Online (Sandbox Code Playgroud)

另一种方法superset?:

my-demo.core=> (superset? #{:a 1 :b 3} #{:a 1})
true
my-demo.core=> (superset? #{:a 1 :b 3} #{:a 2})
false
Run Code Online (Sandbox Code Playgroud)

我觉得有一种更好的方法可以做到这一点.

我的问题是:在Clojure中是否有一种惯用的方法可以在地图中找到匹配的键和值?

dictionary clojure

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

如何让 findstr 内联显示完整的文件路径?

当我使用时,grep我会得到一个匹配结果列表,其中包含所有子目录的完整文件路径。

当我这样做时findstr- 我没有得到内联结果。

我的问题是:如何findstr内联显示完整的文件路径?

command-line grep dos path findstr

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

CRDT 和 RAFT 协议之间是否存在关系——或者它们是正交的?

以多人网络游戏的用例为例。您立即就会遇到在网络上复制和协调共享状态的问题。

似乎有多种工具针对此问题的某个方面,其中两个工具似乎有重叠:

  1. 无冲突复制数据类型(CRDT) - 用于
  2. RAFT 共识算法-用于在分布式网络中选择事务领导者以帮助达成共识。

我的问题是:CRDT 和 RAFT 协议之间是否存在关系——或者它们是正交的?

distributed-computing distributed-system shared-state raft crdt

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

OCF规范是否意味着Docker不再以Linux为中心?

当我第一次听说微软正在努力运行docker容器时,它没有任何意义.

有一段时间,似乎Docker 以Linux为中心,依赖于Linux容器.

现在看来Docker 已经从LXC 切换runc中的Open Containers Format(OCF)规范的实现.

我的问题是:OCF规范是否意味着Docker不再以Linux为中心?(也就是说它是如何工作的?这是否意味着在OSX上也存在理论上的能力?)

linux windows lxc runc docker

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

我们可以考虑 Clojure 的 STM“功能性”吗?

我们知道纯函数

  1. 对于给定的输入总是返回相同的结果
  2. 不产生副作用

这导致我们引用透明性-表达式可以替换为值而不改变程序的行为

这就告诉我们,一个程序可以说是纯粹的功能,如果它不包括在该程序的运行环境中的实体的破坏性修改(更新)

当我们查看软件事务内存时,我们会看到类似于数据库事务的并发控制机制,用于控制并发计算中对共享内存的访问。但它本身并没有什么特别的功能。

我的问题是:我们可以考虑 Clojure 的 STM“功能性”吗?

functional-programming clojure referential-transparency purely-functional stm

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

为什么Haskell case语句中的默认catch-all不是必需的?

Haskell以其安全的语言而闻名.通常会将更多可能的编程错误推送到编译时错误,并减少运行时间.

这方面的一个例子是if表达.在else中,如果始终是强制性的.你需要掩盖两种可能性.这很好,因为您已经考虑并涵盖了运行时将发生的所有可能性.

现在Haskell有一个case表达.(这与switch其他OO和命令式语言中的语句有一些相似之处- 但Haskell在类型系统中增加了很多丰富性).

describeList :: [a]
describeList xs = "The list is " ++ case cs of [] -> "empty."
                                               [x] -> "a singleton list."
                                               xs -> "a longer list."
Run Code Online (Sandbox Code Playgroud)

但是使用case表达式,默认的'catch-all'不是强制性的.

对我来说,这听起来会导致运行时错误.

我的问题是:为什么Haskell case语句中的默认catch-all不是必需的?

haskell

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

为什么我得到'变量不在范围内'为Just ord <*>什么都没有?

我正在从一本受欢迎的书中学习Haskell .

它包括以下ghci命令:

ghci> Just ord <*> Nothing  
Nothing
Run Code Online (Sandbox Code Playgroud)

当我在ghci中运行时,我得到:

<interactive>:1:6: error:
    • Variable not in scope: ord :: a0 -> b
    • Perhaps you meant one of these:
        ‘or’ (imported from Prelude), ‘odd’ (imported from Prelude)
Run Code Online (Sandbox Code Playgroud)

我认为有一个拼写错误,或者是由于作者错误或者Haskell的版本改变了语法.

我的问题是:为什么我得到variable not in scopeJust ord <*> Nothing

haskell

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