如果按下*Vim,编辑器将在同一文件中搜索下一个术语.它使您无需输入该术语.
有没有一种快速方法可以用新光标替换当前光标下的术语?发出命令的一个字符,然后键入新术语Enter.
我刚刚意识到VIM 7.3内置支持突出显示Markdown文件.优秀.但是,它不会在标题上折叠.
可以提供有关如何使其工作的建议吗?
或者,我只使用Markdown作为获取简单结构化文本的方法.如果有更好的替代格式,请同时建议.但不确定我是否会挖掘TVO或VimOutliner.
到目前为止,我使用Haskell XML工具包HXT看到的所有示例都runX用于执行解析器.runX在IO monad中运行.有没有办法在IO之外使用这个XML解析器?对我来说似乎是一个纯粹的操作,不明白为什么我被迫在IO里面.
随着在bitbucket上收集的问题,我希望有一种方法来收集和备份它们,如果我需要离线副本,或者不再使用Bitbucket或其他东西.该网站不提供此服务.我可以使用另一种机制吗?
我该如何写以下内容:
typedef void (^T)(void);
T f() {
return ^{};
}
Run Code Online (Sandbox Code Playgroud)
没有typedef?
Haskell包依赖继续是一个问题,但我不知道如何解决这个问题.我的环境:
然后:
我得到了这个:
$ cabal install yesod
cabal: Error: some packages failed to install:
persistent-0.3.1.2 failed during the building phase. The exception was:
ExitFailure 1
yesod-0.6.6 depends on persistent-0.3.1.2 which failed to install.
$ cabal install persistent-0.3.1.2
Resolving dependencies...
cabal: cannot configure blaze-builder-0.2.0.2. It requires text ==0.10.*
For the dependency on text ==0.10.* there are these packages: text-0.10.0.0,
text-0.10.0.1 and text-0.10.0.2. However none of them are available.
text-0.10.0.0 was …Run Code Online (Sandbox Code Playgroud) 许多80年代的计算机爱好者都听说过Infocom系列互动小说游戏,特别是"Zork","银河系漫游指南","Planetfall","A Mind Forever Voyaging" 等等.
这些游戏是在"Z-Machine"虚拟机之上实现的.该机器实现为RAM块,堆栈和虚拟处理器.该过程执行可以动态读取和写入RAM的指令.
我的问题是:VMs RAM是动态的.什么是一种有效且合理的惯用方式来表示这个RAM(以及更全面的虚拟机结构),以便我可以实现运行这些游戏的软件?例如,我应该使用Data.Array来表示RAM和状态monad吗?
找不到一个好例子.感谢任何帮助.JSON如下:
[{
"EXIF:Make": "Canon",
"EXIF:Model": "Canon PowerShot S95",
"EXIF:Orientation": "Horizontal (normal)",
"EXIF:XResolution": 180,
"EXIF:YResolution": 180,
"EXIF:ResolutionUnit": "inches"
}]
Run Code Online (Sandbox Code Playgroud)
我使用的代码如下:
import Data.Aeson
import Data.Attoparsec
import Data.ByteString
x <- fmap (parse json) (Data.ByteString.readFile "json.txt")
Run Code Online (Sandbox Code Playgroud)
如何定义和使用FromJSON要转换x为的类型:
data Exif = Exif [[(String, String)]]
Run Code Online (Sandbox Code Playgroud)
或类似的数据结构?注意[[]]- 我希望JSON有多个顶级条目.
我试图用XPath和箭头同时通过HXT来解决问题,我完全坚持如何思考这个问题.我有以下HTML:
<div>
<div class="c1">a</div>
<div class="c2">b</div>
<div class="c3">123</div>
<div class="c4">234</div>
</div>
Run Code Online (Sandbox Code Playgroud)
我已经提取到HXT XmlTree中了.我想做的是定义一个函数(我想?):
getValues :: [String] -> IOSArrow Xmltree [(String, String)]
Run Code Online (Sandbox Code Playgroud)
哪个,如果用作getValues ["c1", "c2", "c3", "c4"],将得到我:
[("c1", "a"), ("c2", "b"), ("c3", "123"), ("c4", "234")]
Run Code Online (Sandbox Code Playgroud)
请帮忙?
我想阅读其中一个流行的修订控制工具的源代码,以了解修订控制的工作原理.我想阅读一篇最具可读性的文章.
我不知道对此进行客观,量化的测量,所以本着WTFs/min漫画的精神,我想问那些已经阅读过这些工具的源代码的人,你估计有多少WTF /分钟每个项目都有?
我花了很多时间试图弄清楚如何使用HXT.我一直反对使用的例子deep.怎么deep办?
例如,此代码具有以下内容:
atTag tag = deep (isElem >>> hasName tag)
Run Code Online (Sandbox Code Playgroud)
-- case-insensitive tag matching
atTagCase tag = deep (isElem >>> hasNameWith ((== tag') . upper . localPart))
where tag' = upper tag
upper = map toUpper
Run Code Online (Sandbox Code Playgroud) 一个人为的例子,但下面的代码演示了我在学习Haskell时遇到的一类问题.
import Control.Monad.Error
import Data.Char (isDigit)
countDigitsForList [] = return []
countDigitsForList (x:xs) = do
q <- countDigits x
qs <- countDigitsForList xs
return (q:qs)
countDigits x = do
if all isDigit x
then return $ length x
else throwError $ "Bad number: " ++ x
t1 = countDigitsForList ["1", "23", "456", "7890"] :: Either String [Int]
t2 = countDigitsForList ["1", "23", "4S6", "7890"] :: Either String [Int]
Run Code Online (Sandbox Code Playgroud)
t1给我正确的答案,并t2正确识别错误.
在我看来,对于一个足够长的列表,这段代码将耗尽堆栈空间,因为它在monad中运行,并且在每一步中它都会在返回结果之前尝试处理列表的其余部分.
累加器和尾递归似乎可以解决问题,但我反复阅读,由于懒惰的评估,在Haskell中都没有必要.
如何将这种代码构造成一个没有堆栈空间问题和/或懒惰的代码?