小编lec*_*eco的帖子

懒惰的评估和时间复杂性

我正在寻找stackoverflow Non-Trivial Lazy Evaluation,这让我想到了Keegan McAllister的演讲:为什么要学习Haskell.在幻灯片8中,他显示了最小功能,定义为:

minimum = head . sort
Run Code Online (Sandbox Code Playgroud)

并指出其复杂性为O(n).我不明白为什么如果通过替换排序是O(nlog n),复杂性被认为是线性的.帖子中引用的排序不能是线性的,因为它不假设数据的任何内容,因为线性排序方法需要它,例如计数排序.

懒惰的评价在这里发挥着神秘的作用吗?如果是这样,背后的解释是什么?

sorting algorithm haskell lazy-evaluation time-complexity

69
推荐指数
7
解决办法
4067
查看次数

检索Git中特定提交的子提交列表

我想知道是否有一种有效的方法来检索给定提交的子节点.尽管在Git引用提交的子进程中讨论了一种方法,但效率非常低.

我认为这将是一个在Git中完成的直接事情,但显然,事实并非如此.

问候.

git

18
推荐指数
1
解决办法
5444
查看次数

Git和日志顺序

我试图从"git log"输出创建一个线性顺序,但我的所有尝试都失败了.我需要做的是将提交映射到包含该提交的下一个版本.我跑不了

git tag --contains <commit>
Run Code Online (Sandbox Code Playgroud)

对于每个提交,因为我们的存储库包含非常大量的提交(超过300,000).

首先我尝试使用

git log --pretty=format:"%ct%H" | sort --key=1,10 
Run Code Online (Sandbox Code Playgroud)

根据提交时间获得线性顺序.但是,这似乎不会产生100%准确的结果.这导致了我的第一个问题:

Q1)当提交被推入主存储库时,git存储提交时间如何?它是否以UTC格式存储每次提交的当前计算机时间?

我还查看了"git help log",文档说明默认情况下,git log按时间顺序列出提交.在我的项目中,我检查了是否引入了任何错误,但据我所知,代码是正确的,并且git log给出的时间顺序不是线性顺序.最后,我的问题是?

Q2)如果git不存储修订号,怎样才能从"git log"获得线性顺序?

谢谢 :)

git

8
推荐指数
1
解决办法
5743
查看次数

递归定义类型中的Scala和==方法

我知道==Scala中的方法与Java中的equals方法具有相同的语义.但是,我想了解什么时候应用于递归结构的实例.例如,考虑一堆表达式:

abstract class Exp

abstract class BinaryExp(l:Exp, r:Exp) extends Exp

case class Plus(l:Exp, r:Exp) extends BinaryExp(l,r)

case class Minus(l:Exp, r:Exp) extends BinaryExp(l,r)

case class Mult(l:Exp, r:Exp) extends BinaryExp(l,r)

case class Div(l:Exp, r:Exp) extends BinaryExp(l,r)

case class Num(v:Int) extends Exp
Run Code Online (Sandbox Code Playgroud)

然后,当我有两个a的实例时BinaryExp,说obj1obj2,确实会obj1 == obj2导致深度(递归)相等性测试?也就是说,它保证如果obj1 == obj2成立,则obj1obj2表示相同的精确表达式树?

请注意,在所有类中,我依赖于默认实现==(它不会在任何地方被覆盖).

scala

7
推荐指数
1
解决办法
330
查看次数

构建scala项目时Intellij 12和内部编译错误

我刚下载了Intellij 12.01(build#IC-123.94),一旦我尝试构建Scala项目,我得到以下stacktrace:

Internal error: (java.lang.ClassNotFoundException) org.jetbrains.jps.incremental.BinaryContent
java.lang.ClassNotFoundException: org.jetbrains.jps.incremental.BinaryContent
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
    at org.jetbrains.jps.incremental.scala.LazyCompiledClass.<init>(ScalaBuilder.scala:239)
    at org.jetbrains.jps.incremental.scala.IdeClient.generated(ScalaBuilder.scala:230)
    at org.jetbrains.jps.incremental.scala.remote.ClientEventProcessor.process(ClientEventProcessor.scala:17)
    at org.jetbrains.jps.incremental.scala.remote.RemoteServer$.liftedTree1$1(RemoteServer.scala:76)
    at org.jetbrains.jps.incremental.scala.remote.RemoteServer$.org$jetbrains$jps$incremental$scala$remote$RemoteServer$$handle(RemoteServer.scala:74)
    at org.jetbrains.jps.incremental.scala.remote.RemoteServer$$anonfun$send$1$$anonfun$apply$1$$anonfun$apply$3.apply(RemoteServer.scala:44)
    at org.jetbrains.jps.incremental.scala.remote.RemoteServer$$anonfun$send$1$$anonfun$apply$1$$anonfun$apply$3.apply(RemoteServer.scala:43)
    at org.jetbrains.jps.incremental.scala.package$.using(package.scala:15)
    at org.jetbrains.jps.incremental.scala.remote.RemoteServer$$anonfun$send$1$$anonfun$apply$1.apply(RemoteServer.scala:43)
    at org.jetbrains.jps.incremental.scala.remote.RemoteServer$$anonfun$send$1$$anonfun$apply$1.apply(RemoteServer.scala:40)
    at org.jetbrains.jps.incremental.scala.package$.using(package.scala:15)
    at org.jetbrains.jps.incremental.scala.remote.RemoteServer$$anonfun$send$1.apply(RemoteServer.scala:40)
    at org.jetbrains.jps.incremental.scala.remote.RemoteServer$$anonfun$send$1.apply(RemoteServer.scala:39)
    at org.jetbrains.jps.incremental.scala.package$.using(package.scala:15)
    at org.jetbrains.jps.incremental.scala.remote.RemoteServer.send(RemoteServer.scala:39)
    at org.jetbrains.jps.incremental.scala.remote.RemoteServer.compile(RemoteServer.scala:24)
    at org.jetbrains.jps.incremental.scala.ScalaBuilder$$anonfun$5$$anonfun$apply$3$$anonfun$apply$4.apply(ScalaBuilder.scala:110)
    at org.jetbrains.jps.incremental.scala.ScalaBuilder$$anonfun$5$$anonfun$apply$3$$anonfun$apply$4.apply(ScalaBuilder.scala:100)
    at scala.util.Either$RightProjection.map(Either.scala:536)
    at org.jetbrains.jps.incremental.scala.ScalaBuilder$$anonfun$5$$anonfun$apply$3.apply(ScalaBuilder.scala:100)
    at org.jetbrains.jps.incremental.scala.ScalaBuilder$$anonfun$5$$anonfun$apply$3.apply(ScalaBuilder.scala:99)
    at scala.util.Either$RightProjection.flatMap(Either.scala:523)
    at org.jetbrains.jps.incremental.scala.ScalaBuilder$$anonfun$5.apply(ScalaBuilder.scala:99)
    at org.jetbrains.jps.incremental.scala.ScalaBuilder$$anonfun$5.apply(ScalaBuilder.scala:98)
    at scala.util.Either$RightProjection.flatMap(Either.scala:523)
    at org.jetbrains.jps.incremental.scala.ScalaBuilder.doBuild(ScalaBuilder.scala:98)
    at org.jetbrains.jps.incremental.scala.ScalaBuilder.build(ScalaBuilder.scala:67)
    at org.jetbrains.jps.incremental.scala.ScalaBuilderService$ScalaBuilderDecorator.build(ScalaBuilderService.java:42)
    at org.jetbrains.jps.incremental.IncProjectBuilder.runModuleLevelBuilders(IncProjectBuilder.java:963)
    at …
Run Code Online (Sandbox Code Playgroud)

scala intellij-idea

7
推荐指数
1
解决办法
7032
查看次数

Z3中的软/硬约束

如何在Z3中表达软约束和硬约束?我从API中了解到可能有假设(软约束),但在使用命令行工具时我无法表达这一点.我用z3/smt2/si来调用它

z3

6
推荐指数
1
解决办法
3761
查看次数

有效检索包含提交的版本

在命令行中,如果我输入

git tag --contains {commit}
Run Code Online (Sandbox Code Playgroud)

要获取包含给定提交的版本列表,每次提交大约需要11到20秒.由于目标代码库存在超过300,000次提交,因此为所有提交检索此信息需要很多时间.

但是,gitk显然设法检索这些数据做得很好.从我搜索的内容来看,它为此目的使用缓存.

我有两个问题:

  1. 我该如何解释缓存格式?
  2. 有没有办法git从命令行工具获取转储以生成相同的信息?

git

6
推荐指数
1
解决办法
225
查看次数

使modules_install重新启动配置过程

我正在尝试为我的Debian机器编译Linux内核版本(linux-2.6.32.60)。第一步是通过键入以下内容来创建配置文件(.config):

使xconfig

创建配置文件后,我只需运行make即可构建映像内核和模块。到那时为止没有问题。

但是,在安装模块(.ko文件)时,我键入:

制作modules_install

而不是安装新编译的模块,而是带来了命令行配置设置,该设置是错误的(已经创建了配置文件)。

有什么想法导致配置重新启动?

问候。

linux linux-kernel

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

Scala和类型绑定给定的操作

是否可以在方法中定义参数x,以便x的类型T是实现给定函数签名的通用类型(让我们说def apply() : Double),而不引入新类型?

[示例]目标是定义类似的东西(我只是为了说明而使用adhoc语法):

def foo(x : T with def apply() : Double) = { ... }

目前,我可以引入一种新类型ApplyDouble,但这需要我将实例为合法参数的所有可能类型扩展为'foo',然后将foo的签名转换为

def foo(x : ApplyDouble) = { ... }

scala

5
推荐指数
1
解决办法
103
查看次数

GNU 时间内存输出也考虑子进程吗?

当运行 GNU time ( /usr/bin/time) 并检查内存消耗时,其输出是否考虑了目标程序的子进程的内存使用情况?

在 GNU 的时间联机帮助页中找不到任何内容。

linux time gnu

5
推荐指数
1
解决办法
1578
查看次数

泛型和Java警告

我知道这个主题现在已经讨论了一段时间(例如,java.util.Collections上的Java泛型警告,java泛型,未经检查的警告等)但我面临的情况是我无法找到解释.

我有一个谓词类定义为

public interface Predicate<T> {
    boolean holds(T o) ; 
}
Run Code Online (Sandbox Code Playgroud)

然后,我有一个实用程序类(PredicateUtils)来组成谓词.其中的一个示例方法是

public static <T> Predicate join(final Predicate<T> p1, final Predicate<T> p2) {
    return new Predicate<T>() {

        @Override
        public boolean holds(T o) {
            return (p1.holds(o) && p2.holds(o)) ;
        }
    } ;
}
Run Code Online (Sandbox Code Playgroud)

但是,当我调用join方法时,例如,传递两个Predicate实例,我从jdk(javac 1.7.0_51)编译器得到以下错误:

warning: [unchecked] unchecked conversion
        return PredicateUtils.join(p1, p2) 
  required: Predicate<Integer>
  found:    Predicate
Run Code Online (Sandbox Code Playgroud)

为了简化讨论,可以在给定的类中定义方法(虚拟代码):

public static Predicate<Integer> test() {
    Predicate<Integer> p1 = new Predicate<Integer>() {
        public boolean holds(Integer o) { return true ; } …
Run Code Online (Sandbox Code Playgroud)

java generics

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

检查日期是否在世界某个地方有效

如何检查给定的时间戳是否仍然存在于全球的某个地方?

例如,假设我的时间戳类似于2017年5月10日下午3:49.今天世界上有什么地方是2017年5月10日下午3:49吗?

python timezone timestamp date

3
推荐指数
1
解决办法
234
查看次数