小编Sve*_*enK的帖子

在git config中进行Shell变量扩展

我有一个shell变量,指向我所有配置文件所在的目录.我们假设变量是用export RC=$HOME/rc.创建的.我在配置目录中有一个全局忽略文件:~/rc/globalgitignore.

我的问题是,如何RC在我的.gitconfig文件中扩展变量?

我已经尝试过以下方法:

  • excludesfile = $RC/globalgitignore

  • excludesfile = !$RC/globalgitignore

  • excludesfile = !echo $RC/globalgitignore

  • excludesfile = !$(echo $RC/globalgitignore)

这些解决方案都不起作用.

如果我输入完整路径excludesfile = ~/rc/globalgitignore,这是唯一的方法:但是,如果将我的rc目录移动到其他位置,我必须更改路径.

git shell

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

在Vim中移动文件

有没有办法在Vim中移动文件?我在Vim中打开了一个文件foo/bar.txt.我知道有两种方法来移动这个文件:

第一解决方案

  1. 删除缓冲区 :bd bar.txt
  2. 用shell执行shell上的移动 mv foo/bar.txt foo/bar2.txt
  3. 用vim加载文件 :e foo/bar2.txt

二解决方案:

  1. 关闭Vim,使所有缓冲区关闭.
  2. 在shell上执行移动...
  3. 启动Vim并加载文件.

但这两种解决方案令人尴尬.我知道,有一个用于重命名文件vim-enuch的插件,但是没有Vim方式来执行这样的基本功能吗?

vim

16
推荐指数
3
解决办法
9362
查看次数

管道广播

几天前的一个观点,我问了这个问题.现在我需要这个函数的纯单线程版本:

重复一遍,我需要一个函数将每个接收到的值发送到每个接收器并收集它们的结果.函数的类型签名应该是这样的:

broadcast :: [Sink a m b] -> Sink a m [b]
Run Code Online (Sandbox Code Playgroud)

最好的斯文


PS不是sequence,我试过了:

> C.sourceList [1..100] $$ sequence [C.fold (+) 0, C.fold (+) 0]
[5050, 0]
Run Code Online (Sandbox Code Playgroud)

预期结果:

[5050, 5050]
Run Code Online (Sandbox Code Playgroud)

PPS zipSinks提供了所需的结果,但它只适用于元组:

> C.sourceList [1..100] $$ C.zipSinks (C.fold (+) 0) (C.fold (+) 0)
(5050, 5050)
Run Code Online (Sandbox Code Playgroud)

haskell conduit

9
推荐指数
1
解决办法
264
查看次数

具有活性香蕉和gtk2hs的活性表

我写了一个小应用程序,跟踪我在电视剧中的进展.该应用程序使用功能反应式编程(FRP)和反应式香蕉在Haskell中编写.

该应用程序可以:

  • 添加/删除新的电视系列到表
  • 改变一个系列的季节和剧集

应用截图

我在编写代码时会遇到问题,这些代码会在表格中添加新的电视剧并连接新事件.从CRUD例子在这里并没有完全帮助我,因为我有更多的要求,那么就从列表中选择一个元素.

如何以FRP方式从CRUD示例中编写类似reactiveTable函数的reactiveListDisplay函数?如何在编译网络后为删除按钮和季节和剧集旋转按钮添加事件?

data Series = Series { name :: String
                     , season :: Int
                     , episode :: Int
                     }


insertIntoTable :: TableClass t => t -> SeriesChangeHandler -> SeriesRemoveHandler -> Series -> IO ()
insertIntoTable table changeHandler removeHandler (Series name s e) = do
   (rows, cols) <- tableGetSize table
   tableResize table (rows+1) cols

   nameLabel     <- labelNew $ Just name 
   adjustmentS   <- adjustmentNew (fromIntegral s) 1 1000 …
Run Code Online (Sandbox Code Playgroud)

haskell frp reactive-programming reactive-banana

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

命令行Java调试器

是否有一个很好的java命令行调试器?

我给了JDB一个机会,但是Commandline界面很糟糕.如果我想更改最后一行并重新执行它,我必须重新键入整行.点击[UP-ARROW]只给我"^ [[A".包/类/方法名也没有完成.

GDB是一个不错的选择,但我不知道如何使用它进行远程调试.

我有一个Maven/Vim设置,并希望使用java的控制台调试器,是否有可能在此设置中集成GDB或其他好的调试器?

问候斯文

java debugging

7
推荐指数
3
解决办法
4939
查看次数

管道:多流消费者

我写了一个计算语料库中NGrams频率的程序.我已经有一个功能消耗了一个令牌流并产生了一个单一订单的NGrams:

ngram :: Monad m => Int -> Conduit t m [t]
trigrams = ngram 3
countFreq :: (Ord t, Monad m) => Consumer [t] m (Map [t] Int)
Run Code Online (Sandbox Code Playgroud)

目前我只能将一个流消费者连接到流源:

tokens --- trigrams --- countFreq
Run Code Online (Sandbox Code Playgroud)

如何将多个流使用者连接到同一个流源?我想要这样的东西:

           .--- unigrams --- countFreq
           |--- bigrams  --- countFreq
tokens ----|--- trigrams --- countFreq
           '--- ...      --- countFreq
Run Code Online (Sandbox Code Playgroud)

一个优点是并行运行每个消费者

编辑: 感谢Petr,我提出了这个解决方案

spawnMultiple orders = do
    chan <- atomically newBroadcastTMChan

    results <- forM orders $ \_ -> newEmptyMVar
    threads <- forM (zip results orders) $
                        forkIO …
Run Code Online (Sandbox Code Playgroud)

haskell nlp conduit

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

Haskell返回类型多态性

我有以下数据结构:

data TempUnit = Kelvin Float
              | Celcius Float
              | Fahrenheit Float
Run Code Online (Sandbox Code Playgroud)

我想实现一个将温度从开尔文转换为另一个单位的函数.如何将返回类型单元传递给函数?

haskell

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

Literate Haskell中的条件编译

我有一个识字的haskell文件,并希望使用条件编译.我使用文字编程的鸟类风格.以下代码不起作用.

> #if MIN_VERSION_base(4,6,0)
> import Control.Exception
> #endif
Run Code Online (Sandbox Code Playgroud)

我需要一个cabal 1.14.0的解决方案

编辑:

cpphs有一个选项--unlit可以取消识别源代码,但我不知道如何将此选项传递给cabal中的cpphs.

preprocessor haskell literate-programming cabal

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

隐藏运算符以避免AST中的歧义

我正在尝试官方Isabelle教程中的列表示例.我将#with :@with 替换为与++Haskell具有相同的语法.现在我收到有关AST中含糊不清的警告.我知道我可以隐藏函数,hide_const但这对于中缀表示法的运算符不起作用.我怎样才能隐藏Isabelle的操作员?

确切的警告信息是:

Ambiguous input? produces 2 parse trees:
  ("\<^const>HOL.Trueprop"
    ("\<^const>HOL.eq" ("\<^const>Map.map_add" ("/<^const>toylist.list.Nil") ("_position" ys))
      ("_position" ys)))
  ("\<^const>HOL.Trueprop"
    ("\<^const>HOL.eq" ("\<^fixed>app" ("\<^const>toylist.list.Nil") ("_position" ys)) ("_position" ys)))
Fortunately, only one parse tree is well-formed and type-correct,
but you may still want to disambiguate your grammar or your input.
Run Code Online (Sandbox Code Playgroud)

isabelle

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

Coq:应用具有替代的传递性

我想在Coq中证明这个引理:

a : Type
b : Type
f : a -> b
g : a -> b
h : a -> b
______________________________________(1/1)
(forall x : a, f x = g x) ->
(forall x : a, g x = h x) -> forall x : a, f x = h x
Run Code Online (Sandbox Code Playgroud)

我知道这Coq.Relations.Relation_Definitions定义了关系的传递性:

Definition transitive : Prop := forall x y z:A, R x y -> R y z -> R x z.

简单地使用证明策略apply transitivity显然会失败.如何将传递性引理应用于上述目标?

transitivity relation coq

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

常量类成员不是常量 - C++

我想知道何时将值传递给常量变量,为什么这个变量可以改变.

#include <cstdio>

struct point
{
    int x, y, z;
};

class A
{
    public:
        A(const point &p) :
           p(p)
        {
             printf("(%d,%d,%d)\n", p.x, p.y, p.z);
        }

        void do_smth()
        {
            printf("(%d,%d,%d)\n", p.x, p.y, p.z);
        }

        const point &p;
};

int main(int argc, const char *argv[])
{
    point p = {1, 1, 1};
    A a(p);
    p.y = 4;
    a.do_smth();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

标准输出:

(1, 1, 1)
(1, 4, 1)
Run Code Online (Sandbox Code Playgroud)

我使用g ++ v4.7而没有额外的参数来编译这段代码.

c++ const

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