我刚刚第一次重写了我的一个repos的历史(使用git-filter-branch).问题是repo有几个标签,重写之后似乎与结果历史完全断开.我认为这是因为与标签相关的历史记录没有被重写,所以他们必须指向旧的提交.那么,我可以做些什么来"应用"新历史上的标签.一点点ASCII艺术,也许更容易理解我的问题:
原始回购:
+ HEAD
|
|
+ TAG 0.2.0
|
|
+ TAG 0.1.0
|
|
+ Initial commit
Run Code Online (Sandbox Code Playgroud)
报告gitk --all重写后报告的回购结构:
+ HEAD
|
|
|
|
|
|
|
|
+ Initial commit
+ HEAD
|
|
+ TAG 0.2.0
|
|
+ TAG 0.1.0
|
|
+ Initial commit
Run Code Online (Sandbox Code Playgroud) 有没有办法从另一个名称空间重新导出某些名称空间的变量?我希望能够做到这一点:
(ns mine.core
(:use [incanter core charts datasets io]))
; re-export Incanter somehow
Run Code Online (Sandbox Code Playgroud)
use然后在 REPL 中我只需-ing就可以使用 Incanter 的功能mine.core。
user=> (use 'mine.core)
nil
user=> (view (histogram (sample-normal 1000)))
Run Code Online (Sandbox Code Playgroud)
谢谢!
我有一个结果包含一个scalaz析取中的向量列表,我希望能够从右侧检查和过滤掉元素.
简化示例:
import scalaz._
import Scalaz._
type TL = Throwable \/ List[Vector[Int]]
val goodTL: TL = \/-(List(Vector(1,2,3),Vector(), Vector(2,3,4)))
Run Code Online (Sandbox Code Playgroud)
如果我想从填充的元素中删除空元素以及任何值!= 2,我可以执行以下操作:
for {
v <- goodTL
f = v.flatten
} yield for {
i <- f
if i != 2
} yield i
Run Code Online (Sandbox Code Playgroud)
给出一个scalaz.\/[Nothing,List[Int]] = \/-(List(1, 3, 3, 4))我想要的东西,但我想知道是否有一个不太复杂的方法来实现这一目标.
Swift是否具有与模式匹配中使用的Haskell的as-patterns类似的东西?我试图switch通过使用嵌套模式摆脱下面的代码中的第二条语句:
indirect enum Type: CustomStringConvertible {
case Int
case Fun(Type, Type)
var description: String {
switch self {
case .Int: return "int"
case .Fun(let p, let r):
switch p {
case .Fun(_): return "(\(p)) -> \(r)"
case _: return "\(p) -> \(r)"
}
}
}
}
Type.Int // "int"
Type.Fun(.Int, .Int) // "int -> int"
Type.Fun(Type.Fun(.Int, .Int), .Int) // "(int -> int) -> int"
Run Code Online (Sandbox Code Playgroud)
使用as-pattern的Haskell等效项为:
data Type =
Int
| Fun Type Type
desc :: Type …Run Code Online (Sandbox Code Playgroud) 有没有人知道如何在插入模式下更改gVim中文本指针的粗细?我在Windows上使用它,所以也许有一个Windows技巧可以完成这项工作.
现在它大约是3px宽,而我想要1px宽.
以下始终预先选择最后一个选项,即使我设置了selected属性,但我喜欢预先选择的第一个选项.
<select name="filter">
<option value="" selected>Make a choice</option>
<option value="1">1</option>
<option value="3">3</option>
<option value="7">7</option>
<option value="">all</option>
</select>
Run Code Online (Sandbox Code Playgroud)
可以这样做吗?
我知道FocusPanel我可以附加这样的处理程序,但根据我的经验,这个组件表现不佳.所以我想尽可能地避免它.
所以我想知道为什么没有办法在文档上附加键处理程序呢?根据quirksmode.org,它可以跨浏览器工作,所以这不应该是一个问题.
我自己也尝试过编写一些JSNI代码,这对大多数情况都适用.但是,如果有任何其他窗口小部件在文档上侦听与我相同的事件,并且该窗口小部件允许事件传播,我几乎无法对到达文档的事件做任何事情,因为它被标记为已死并且异常将是每当我尝试访问该事件的数据时抛出.
到目前为止,这是我的代码:
public class RichDocument implements HasKeyPressHandlers, HasKeyDownHandlers,
HasKeyUpHandlers, HasClickHandlers {
private static final RichDocument instance = new RichDocument();
public static RichDocument get() {
return instance;
}
private final EventBus eventBus = new SimpleEventBus();
private RichDocument() {
startListening();
}
@Override
public HandlerRegistration addClickHandler(ClickHandler handler) {
return eventBus.addHandler(ClickEvent.getType(), handler);
}
@Override
public HandlerRegistration addKeyDownHandler(KeyDownHandler handler) {
return eventBus.addHandler(KeyDownEvent.getType(), handler);
}
@Override
public HandlerRegistration addKeyPressHandler(KeyPressHandler handler) {
return eventBus.addHandler(KeyPressEvent.getType(), handler);
}
@Override
public HandlerRegistration addKeyUpHandler(KeyUpHandler handler) …Run Code Online (Sandbox Code Playgroud) 定义的代码是
fun foldl f e l = let
fun g(x, f'') = fn y => f''(f(x, y))
in foldr g (fn x => x) l e end
Run Code Online (Sandbox Code Playgroud)
我不明白这是如何运作的; 目的是g(x, f'')什么?
我也在Haskell中找到了一个类似的例子,定义很简短
myFoldl f z xs = foldr step id xs z
where
step x g a = g (f a x)
Run Code Online (Sandbox Code Playgroud) 我有一个Mod受签名限制的模块Sig.该模块有一个Nested子模块.签名具有匹配的Nested子签名:
module type Sig = sig
val a : int
module type Nested = sig
val b : int
end
end
module Mod : Sig = struct
let a = 1
module Nested = struct
let b = 2
end
end
Run Code Online (Sandbox Code Playgroud)
但是,这会产生以下错误:
Error: Signature mismatch:
Modules do not match:
sig val a : int module Nested : sig val b : int end end
is not included in
Sig
The field `Nested' …Run Code Online (Sandbox Code Playgroud) 我想用标准 ML 制作函数映射树。如果函数 f(x) = x + 1; 然后
maptree(f, NODE(NODE(LEAF 1,LEAF 2),LEAF 3));
Run Code Online (Sandbox Code Playgroud)
应该做出结果
NODE(NODE(LEAF 2,LEAF 3),LEAF 4))
Run Code Online (Sandbox Code Playgroud)
我写的代码如下。
datatype 'a tree = LEAF of 'a | NODE of 'a tree * 'a tree;
fun f(x) = x + 1;
fun maptree(f, NODE(X, Y)) = NODE(maptree(f, X), maptree(f, Y))
| maptree(f, LEAF(X)) = LEAF(f X);
Run Code Online (Sandbox Code Playgroud)
但是当我像这样执行这段代码时
maptree(f, (NODE(NODE(LEAF 1,LEAF 2),LEAF 3)));
Run Code Online (Sandbox Code Playgroud)
结果不是我想要 (NODE(NODE(LEAF 2,LEAF 3),LEAF 4))) 而是 NODE(NODE(LEAF #,LEAF #),LEAF 4))。为什么会发生这种情况(不是数字而是#)?