小编Ion*_*tan的帖子

Git,重写master分支和相关标签的历史

我刚刚第一次重写了我的一个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)

tags git history rewrite

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

Clojure:重新导出变量

有没有办法从另一个名称空间重新导出某些名称空间的变量?我希望能够做到这一点:

(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)

谢谢!

namespaces clojure

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

过滤scalaz析取右侧的值

我有一个结果包含一个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))我想要的东西,但我想知道是否有一个不太复杂的方法来实现这一目标.

scala scalaz

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

Swift中类似Haskell的模式?

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)

haskell pattern-matching swift

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

如何在插入模式下更改Vim文本指针大小?

有没有人知道如何在插入模式下更改gVim中文本指针的粗细?我在Windows上使用它,所以也许有一个Windows技巧可以完成这项工作.

现在它大约是3px宽,而我想要1px宽.

windows vim cursor

4
推荐指数
1
解决办法
680
查看次数

如何在选择菜单中选择第一个空值选项?

以下始终预先选择最后一个选项,即使我设置了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)

可以这样做吗?

html xhtml option

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

为什么GWT不允许我们在文档元素上添加关键事件处理程序?

我知道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)

events gwt keyboard-events

4
推荐指数
1
解决办法
6591
查看次数

根据标准ML中的foldr定义foldl

定义的代码是

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)

haskell functional-programming sml fold

4
推荐指数
1
解决办法
649
查看次数

OCaml子模块受子签名约束

我有一个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)

ocaml module

4
推荐指数
1
解决办法
371
查看次数

我想用标准 ML 制作函数映射树

我想用标准 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))。为什么会发生这种情况(不是数字而是#)?

sml smlnj

4
推荐指数
1
解决办法
830
查看次数