小编Apo*_*isp的帖子

什么是最好的Java模拟框架?

在Java中创建模拟对象的最佳框架是什么?为什么?每个框架的优缺点是什么?

java unit-testing mocking

347
推荐指数
10
解决办法
20万
查看次数

取消选择选项

说我有一个val s: Option[Option[String]].因此它可以具有以下值:

Some(Some("foo")) Some(None) None

我想减少它,以便第一个成为Some("foo")另外两个成为None.很明显,有很多方法可以实现这一目标,但我正在寻找一种简单的,可能是内置的,不足一线的.

monads scala join flatten option

40
推荐指数
3
解决办法
9002
查看次数

重构和并发开发分支

假设您的软件现有版本有几个维护分支.一些开发人员正在对维护分支进行直接更改,并定期合并到主干中.现在,在主干代码行中进行了广泛的重构,计划即将发布主要版本.但是这使得维护分支基本上与主干中的代码不兼容,因为它们可能依赖于不再存在的代码.

你如何在实践中处理这种情况?

svn version-control refactoring branch

28
推荐指数
1
解决办法
2010
查看次数

是否已知索引链表的实现?

我的直觉告诉我没有好办法实现这一目标,但是,与Stephen Colbert先生不同,我宁愿相信一个开发者社区而不是我的直觉......

有没有一种已知的方法来有效地实现"两个世界中最好的"列表,一个通过索引提供随机访问并且像链接列表一样提供O(1)插入/删除?

我预见到两种可能的结果:要么"不,这是不可能的,出于以下明显的原因......"或"呃,是的,这已经完成了;请看这里,这里和这里."

language-agnostic indexing linked-list list

15
推荐指数
1
解决办法
1万
查看次数

将第一个参数旋转到函数以变为第n个

给定一个至少有n参数的函数,我想旋转第一个参数,使它成为n第一个参数.例如(在无类型的lambda演算中):

r(?a. a)                   = ?a. a
r(?a. ?b. a b)             = ?b. ?a. a b
r(?a. ?b. ?c. a b c)       = ?b. ?c. ?a. a b c
r(?a. ?b. ?c. ?d. a b c d) = ?b. ?c. ?d. ?a. a b c d
Run Code Online (Sandbox Code Playgroud)

等等.

你能用r通用的方式写吗?如果你知道n >= 2怎么办?

这是Scala中陈述的问题:

trait E
case class Lam(i: E => E) extends E
case class Lit(i: Int) extends E
case class Ap(e: E, e: E) …
Run Code Online (Sandbox Code Playgroud)

haskell functional-programming scala lambda-calculus

15
推荐指数
3
解决办法
1174
查看次数

使用签名树的生产应用程序的任何示例?

最近我一直在阅读关于签名树或S树的很多内容.例如,本文.文献对它们的评价非常高,并且为某些应用提供了相对于例如倒置文件或B树相当大的性能提升的证据.

现在,为什么我看不到S-Trees使用得太多了?您是否知道流行应用程序中此类数据结构的任何突出实例?是否有提供签名树索引的DBMS实现?

database theory indexing data-structures

13
推荐指数
1
解决办法
685
查看次数

关闭和普遍量化

我一直在努力研究如何在Scala中实现Church编码的数据类型.它似乎需要rank-n类型,因为你需要一个类型的第一类const函数forAll a. a -> (forAll b. b -> b).

但是,我能够如此编码对:

import scalaz._

trait Compose[F[_],G[_]] { type Apply = F[G[A]] }

trait Closure[F[_],G[_]] { def apply[B](f: F[B]): G[B] }

def pair[A,B](a: A, b: B) =
  new Closure[Compose[({type f[x] = A => x})#f,
                      ({type f[x] = B => x})#f]#Apply, Id] {
    def apply[C](f: A => B => C) = f(a)(b)
  }
Run Code Online (Sandbox Code Playgroud)

对于列表,我能够编码cons:

def cons[A](x: A) = {
  type T[B] = B => (A => B => …
Run Code Online (Sandbox Code Playgroud)

closures functional-programming scala quantifiers church-encoding

12
推荐指数
1
解决办法
1104
查看次数

使用棘手的lambda表达式的奇怪的未定义行为

我一直在努力解决lambda表达式的一个问题,这个问题正在危害我的一个项目.我找到了一个解决方案,但我想确切地了解它的工作原理和原因,以及它是否可靠.

#include <iostream>
#include <functional>
#include <unordered_map>

typedef std::function<const int&(const int&)> Callback;

int f(int i, Callback callback) {
    if (i <= 2) return 1;
    return callback(i-1) + callback(i-2);
}

int main(void) {

    std::unordered_map<int, int> values;

    Callback callback = [&](const int& i) {
        if (values.find(i) == values.end()) {
            int v = f(i, callback);
            values.emplace(i, v);
        }
        return values.at(i);
    };

    std::cout << f(20, callback) << std::endl;

    return 0;

}
Run Code Online (Sandbox Code Playgroud)

我知道这是计算第20个Fibonacci数的一种疯狂方法,但它是我能够详细说明的最紧凑的SSCCE.

如果我编译上面的代码g++ -O0并执行程序,我得到6765,这实际上是第20个斐波纳契数.如果我编译-O1,-O2或者-O3我得到 …

c++ lambda functional-programming c++11

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

如何同时使用1.1版和2.0版?

情况:我们已经没有测试版,1.0版已经发布到几个客户站点.A团队已经忙于1.1版,它将进行增量错误修正和可用性调整,而另一个团队正在使用版本2.0进行大规模更改,其中产品的核心可能已经完全重新设计.现在,1.1的大部分更改都必须在某些时候进入2.0,并且2.0分支中的一些错误修复实际上可能需要安排在早期版本中.问题在于,由于2.0存在根本差异,因此无需手动转换即可合并1.1中的更改​​,反之亦然.

我的问题:在这种情况下,最小化合并冲突和重复工作的最佳修订控制实践是什么?如何确保我的团队在修订控制问题上花费尽可能少的时间和精力,同时仍然向客户提供定期补丁?

svn revision build-process release

10
推荐指数
1
解决办法
574
查看次数

如何链接BiFunctions?

我想链接BiFunctions,就像chainWanted下面的代码示例中的方法一样.

BiFunction将Function作为AndThen的参数.有可能以某种方式链接BiFunctions?

这里的代码因为这个而无法编译,我无法将BiFunction转换为Function.

import java.util.function.BiFunction;
import java.util.function.Function;

import org.openqa.selenium.remote.RemoteWebDriver;

public class Wf {

    BiFunction<RemoteWebDriver, WfParams, RemoteWebDriver> init = this::init;
    BiFunction<RemoteWebDriver, WfParams, RemoteWebDriver> wait = this::wait;

    BiFunction<RemoteWebDriver, WfParams, RemoteWebDriver> chainNow = init
            .andThen(d -> {
                System.out.println("--------------");
                return null;
            });

    BiFunction<RemoteWebDriver, WfParams, RemoteWebDriver> chainWanted = init
            .andThen((BiFunction) wait);

    public RemoteWebDriver init(RemoteWebDriver d, WfParams params) {
        System.out.println("init(d, params)");
        return d;
    }

    public RemoteWebDriver wait(RemoteWebDriver d, WfParams params) {
        System.out.println("Wf.wait(d, params)");
        return d;
    }

    public static void main(String[] args) throws Exception { …
Run Code Online (Sandbox Code Playgroud)

java functional-programming java-8

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