我正在寻找stackoverflow Non-Trivial Lazy Evaluation,这让我想到了Keegan McAllister的演讲:为什么要学习Haskell.在幻灯片8中,他显示了最小功能,定义为:
minimum = head . sort
Run Code Online (Sandbox Code Playgroud)
并指出其复杂性为O(n).我不明白为什么如果通过替换排序是O(nlog n),复杂性被认为是线性的.帖子中引用的排序不能是线性的,因为它不假设数据的任何内容,因为线性排序方法需要它,例如计数排序.
懒惰的评价在这里发挥着神秘的作用吗?如果是这样,背后的解释是什么?
我试图从"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"获得线性顺序?
谢谢 :)
我知道==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,说obj1和obj2,确实会obj1 == obj2导致深度(递归)相等性测试?也就是说,它保证如果obj1 == obj2成立,则obj1并obj2表示相同的精确表达式树?
请注意,在所有类中,我依赖于默认实现==(它不会在任何地方被覆盖).
我刚下载了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) 如何在Z3中表达软约束和硬约束?我从API中了解到可能有假设(软约束),但在使用命令行工具时我无法表达这一点.我用z3/smt2/si来调用它
在命令行中,如果我输入
git tag --contains {commit}
Run Code Online (Sandbox Code Playgroud)
要获取包含给定提交的版本列表,每次提交大约需要11到20秒.由于目标代码库存在超过300,000次提交,因此为所有提交检索此信息需要很多时间.
但是,gitk显然设法检索这些数据做得很好.从我搜索的内容来看,它为此目的使用缓存.
我有两个问题:
git从命令行工具获取转储以生成相同的信息?我正在尝试为我的Debian机器编译Linux内核版本(linux-2.6.32.60)。第一步是通过键入以下内容来创建配置文件(.config):
使xconfig
创建配置文件后,我只需运行make即可构建映像内核和模块。到那时为止没有问题。
但是,在安装模块(.ko文件)时,我键入:
制作modules_install
而不是安装新编译的模块,而是带来了命令行配置设置,该设置是错误的(已经创建了配置文件)。
有什么想法导致配置重新启动?
问候。
是否可以在方法中定义参数x,以便x的类型T是实现给定函数签名的通用类型(让我们说def apply() : Double),而不引入新类型?
[示例]目标是定义类似的东西(我只是为了说明而使用adhoc语法):
def foo(x : T with def apply() : Double) = { ... }
目前,我可以引入一种新类型ApplyDouble,但这需要我将实例为合法参数的所有可能类型扩展为'foo',然后将foo的签名转换为
def foo(x : ApplyDouble) = { ... }
当运行 GNU time ( /usr/bin/time) 并检查内存消耗时,其输出是否考虑了目标程序的子进程的内存使用情况?
在 GNU 的时间联机帮助页中找不到任何内容。
我知道这个主题现在已经讨论了一段时间(例如,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) 如何检查给定的时间戳是否仍然存在于全球的某个地方?
例如,假设我的时间戳类似于2017年5月10日下午3:49.今天世界上有什么地方是2017年5月10日下午3:49吗?