我写了一个Git post-commit钩子,它工作正常.但是,我想添加此钩子以应用于我正在处理的所有当前(和将来)git存储库.我尝试将钩子添加到我~/.git/hooks/
而不是项目目录中的hooks目录中,但是,这似乎不起作用.
有没有办法创建将应用于我的系统上的所有存储库的全局Git挂钩(无需将它们复制到每个项目目录中)?如果没有,那么最好的解决方案是什么 - 也许是一个git-init模板?
~/.cabal/config
在新机器上安装一堆软件包之前,我忘了启用构建库来进行性能分析,而现在--reinstall world
尝试修复这种情况已经让一切都破坏了(自然).
我认为这是更好地利用我的时间来清除一切.我该怎么做?
我看到这经常用于使模块与GHC和Hugs兼容,但谷歌并没有帮助我更多地了解它.
我可以在条件中加入什么?我可以根据正在使用的"基础"版本来制作模块的一部分吗?
编辑3/2017:这是一个很好的资源:https://guide.aelve.com/haskell/cpp-vww0qd72
我刚刚开始学习Haskell,但是现在没有循环是无限令人沮丧的.我想出了如何为函数编写循环.然而,我的问题是我想在迭代循环时输出一些结果.似乎我必须使用debug来执行这个简单的任务.
所以现在我只想了解如何在主结构中打印10次字符串的示例.
换句话说,我想这样做10次:
main = do
putStrLn "a string"
Run Code Online (Sandbox Code Playgroud)
谢谢.我觉得这对我的任务非常有启发性.
我需要一个小脚本,它将在一个具有2个功能的帧中显示SVG(矢量图像);
可以平移图像(使用光标移动以查看svg图像的不同部分)与谷歌地图相似.
SVG图像也可以放大和缩小到谷歌地图,除了不需要加载新图像,因为图像是矢量.
对于一个类似的脚本我已经看到适用于普通图像格式请参见http://jibbering.com/routeplanner/
编辑: 事实证明,一般情况下(不仅仅是数组/参考操作)减慢了更多阵列的创建速度,所以我猜这可能只是测量增加的GC时间,可能不像我想的那么奇怪.但我真的很想知道(并学习如何找出)这里发生了什么,以及是否有一些方法可以在创建大量小数组的代码中缓解这种影响.原始问题如下.
在调查库中的一些奇怪的基准测试结果时,我偶然发现了一些我不理解的行为,尽管它可能非常明显.似乎许多操作(创建新的MutableArray
,读取或修改IORef
)所花费的时间与内存中的数组的数量成比例地增加.
这是第一个例子:
module Main
where
import Control.Monad
import qualified Data.Primitive as P
import Control.Concurrent
import Data.IORef
import Criterion.Main
import Control.Monad.Primitive(PrimState)
main = do
let n = 100000
allTheArrays <- newIORef []
defaultMain $
[ bench "array creation" $ do
newArr <- P.newArray 64 () :: IO (P.MutableArray (PrimState IO) ())
atomicModifyIORef' allTheArrays (\l-> (newArr:l,()))
]
Run Code Online (Sandbox Code Playgroud)
我们正在创建一个新数组并将其添加到堆栈中.随着标准越来越多样本和堆栈增长,数组创建需要更多时间,而且这似乎是线性和定期增长的:
更奇怪的是,IORef
读取和写入都会受到影响,并且我们可以看到atomicModifyIORef'
随着更多阵列的GC 而越来越快.
main = do
let n = 1000000
arrs <- replicateM (n) $ …
Run Code Online (Sandbox Code Playgroud) records = {'foo':foo, 'bar':bar, 'baz':baz}
Run Code Online (Sandbox Code Playgroud)
我想将值更改为0
if None
.我怎样才能做到这一点?
例如:
records = {'foo':None, 'bar':None, 'baz':1}
Run Code Online (Sandbox Code Playgroud)
我想改变foo
和bar
到0
.最后的决定:
records = {'foo':0, 'bar':0, 'baz':1}
Run Code Online (Sandbox Code Playgroud) 我相信以下内容与一样安全Set.mapMonotonic coerce
。即可能发生的最坏情况是,Set
如果a
或b
具有不同的Ord
实例,我将打破不变式:
coerceSet :: Coercible a b=> Set.Set a -> Set.Set b
coerceSet = unsafeCoerce
Run Code Online (Sandbox Code Playgroud)
那是对的吗?
编辑:有关以下功能的问题Set
:https://github.com/haskell/containers/issues/308
haskell ×6
cabal ×2
ghc ×2
algorithm ×1
arrays ×1
coerce ×1
concurrency ×1
dictionary ×1
git ×1
githooks ×1
hook ×1
io ×1
javascript ×1
loops ×1
performance ×1
python ×1
raphael ×1
set ×1
svg ×1