在厌倦了默认的cygwin终端之后,我决定尝试一下rxvt
.一切似乎都很好,除了一件事:我的git存储库的配色方案停止工作.
BTW其他颜色方案,如vim
编辑器工作正常rxvt
.我还运行此脚本以确保启用256种颜色.
我~/.gitconfig
看起来像这样:
[user]
name = xyz
email = xyz@abc.com
[color]
diff = auto
status = auto
branch = auto
[core]
autocrlf = false
Run Code Online (Sandbox Code Playgroud) 看起来我可以使用user_data
模板文件或provisioner
带有内联命令的"remote-exec" 来引导.那么哪一个被认为更惯用?
在Clojure中测试两个数字是否彼此接近的惯用方法是什么?
沿着这条线的某个地方:
(deftest sqrt-test
(is (~= 1.414 (Math/sqrt 2)))
Run Code Online (Sandbox Code Playgroud) 在Scala中,您可以使用LoggingReceive包装receive函数.您如何从Java API实现相同的目标?
def receive = {
LoggingReceive {
case x ? // do something
}
}
Run Code Online (Sandbox Code Playgroud) 两者都达到了同样的目的
# let x = fun () -> begin print_endline "Hello"; 1 end;;
val x : unit -> int = <fun>
# x ();;
Hello
- : int = 1
# let y = lazy begin print_endline "World"; 2 end;;
val y : int lazy_t = <lazy>
# Lazy.force y;;
World
- : int = 2
Run Code Online (Sandbox Code Playgroud)
有什么理由应该优先于另一个?哪一个更有效率?
是否有任何工具可以用来获得像Eclipse/IntelliJ/Visual Studio那样的增量构建?
我刚刚在VMWare Workstation中安装了Ubuntu 10.4.
当我尝试安装java时,我找不到包:
xxx@ubuntu:~$sudo apt-get install sun-java6-jre
Reading package lists... Done
Building dependency tree
Reading state information... Done
Package sun-java6-jre is not available, but is referred to by another package.
This may mean the package is missing, has been obsoleted, or
is only available from another source
E: Package sun-java6-jre has no installation candidate
Run Code Online (Sandbox Code Playgroud)
我糊涂了.
为了用一个简单的例子说明这一点,请说我已经实现了filter
:
filter :: (a -> Bool) -> [a] -> [a]
Run Code Online (Sandbox Code Playgroud)
我有一个p
与现实世界相互作用的谓词:
p :: a -> IO Bool
Run Code Online (Sandbox Code Playgroud)
如何在filter
不编写单独的实现的情况下使其工作:
filterIO :: (a -> IO Bool) -> [a] -> IO [a]
Run Code Online (Sandbox Code Playgroud)
大概如果我可以p
变成p'
:
p': IO (a -> Bool)
Run Code Online (Sandbox Code Playgroud)
然后我就能做到
main :: IO ()
main = do
p'' <- p'
print $ filter p'' [1..100]
Run Code Online (Sandbox Code Playgroud)
但我一直无法找到转换.
编辑: 正如人们在评论中指出的那样,这样的转换没有意义,因为它会破坏IO Monad的封装.
现在的问题是,我可以构建我的代码,以便纯和IO版本不完全复制核心逻辑吗?
说我有一个代表从一些计算任务k
到v
其中一些投入必须要获取外部。
newtype Task k v = Task { run ? ? f. Monad f ? (k ? f v) ? f v }
Run Code Online (Sandbox Code Playgroud)
对于某些任务,mapM
将使用例如提取多个密钥。我想专攻mapM
一些单子。专门针对IO
我想用来Control.Concurrent.Async.mapConcurrently
同时执行IO操作的monad 。
我的第一个直觉是介绍包装器类型
newtype AsyncIO a = AsyncIO { io :: IO a }
Run Code Online (Sandbox Code Playgroud)
然后介绍
instance Monad AsyncIO
Run Code Online (Sandbox Code Playgroud)
但是,这是行不通的,因为在当前的GHC实现mapM
中traverse
,它是在中定义的Traversable
。
是否有一个优雅的解决方案?