小编Muc*_*hin的帖子

比较Haskell的Snap和Yesod Web框架

最近新闻中的两个Haskell网络框架是Yesod(0.8)和Snap(0.4).

很明显,Yesod目前支持的功能远远多于Snap.但是,我无法忍受Yesod用于其HTML,CSS和Javascript的语法.

所以,如果我选择使用Snap,我想了解我会失踪的内容.例如,看起来不像数据库支持那样.会议怎么样?其他特性?

haskell web-frameworks yesod haskell-snap-framework

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

在Vim中,替换光标下所有出现的当前术语

如果按下*Vim,编辑器将在同一文件中搜索下一个术语.它使您无需输入该术语.

有没有一种快速方法可以用新光标替换当前光标下的术语?发出命令的一个字符,然后键入新术语Enter.

vim

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

Vim Markdown折叠?

我刚刚意识到VIM 7.3内置支持突出显示Markdown文件.优秀.但是,它不会在标题上折叠.

可以提供有关如何使其工作的建议吗?


或者,我只使用Markdown作为获取简单结构化文本的方法.如果有更好的替代格式,请同时建议.但不确定我是否会挖掘TVO或VimOutliner.

vim markdown

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

在IO之外运行Haskell HXT?

到目前为止,我使用Haskell XML工具包HXT看到的所有示例都runX用于执行解析器.runX在IO monad中运行.有没有办法在IO之外使用这个XML解析器?对我来说似乎是一个纯粹的操作,不明白为什么我被迫在IO里面.

haskell hxt

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

如何从Bitbucket备份问题列表?

随着在bitbucket上收集的问题,我希望有一种方法来收集和备份它们,如果我需要离线副本,或者不再使用Bitbucket或其他东西.该网站不提供此服务.我可以使用另一种机制吗?

bitbucket issue-tracking

18
推荐指数
3
解决办法
3457
查看次数

Objective-C Block类型作为返回值

我该如何写以下内容:

typedef void (^T)(void);
T f() {
    return ^{};
}
Run Code Online (Sandbox Code Playgroud)

没有typedef?

objective-c objective-c-blocks

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

cabal安装yesod失败了吗?

Haskell包依赖继续是一个问题,但我不知道如何解决这个问题.我的环境:

  • Ubuntu 10.10,新安装
  • apt-get install ghc6 cabal-install
  • cabal update && cabal安装cabal-install

然后:

  • cabal安装yesod

我得到了这个:

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

haskell cabal yesod

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

在Haskell中处理可写内存 - 实现Infocom的Z-Machine VM

许多80年代的计算机爱好者都听说过Infocom系列互动小说游戏,特别是"Zork","银河系漫游指南","Planetfall","A Mind Forever Voyaging" 等等.

这些游戏是在"Z-Machine"虚拟机之上实现的.该机器实现为RAM块,堆栈和虚拟处理器.该过程执行可以动态读取和写入RAM的指令.

我的问题是:VMs RAM是动态的.什么是一种有效且合理的惯用方式来表示这个RAM(以及更全面的虚拟机结构),以便我可以实现运行这些游戏的软件?例如,我应该使用Data.Array来表示RAM和状态monad吗?

haskell virtual-machine z-machine

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

Haskell Aeson:如何将Value转换为自定义类型?

找不到一个好例子.感谢任何帮助.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有多个顶级条目.

json haskell aeson

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

Haskell HXT用于提取值列表

我试图用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)

请帮忙?

xml haskell hxt

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

git,mercurial,bazaar源代码库的可理解性

我想阅读其中一个流行的修订控制工具的源代码,以了解修订控制的工作原理.我想阅读一篇最具可读性的文章.

我不知道对此进行客观,量化的测量,所以本着WTFs/min漫画的精神,我想问那些已经阅读过这些工具的源代码的人,你估计有多少WTF /分钟每个项目都有?

git mercurial bazaar

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

HXT - 什么是"深层"?

我花了很多时间试图弄清楚如何使用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)

xml haskell hxt

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

Haskell,Monads,Stack Space,Laziness - 如何构造代码变得懒惰?

一个人为的例子,但下面的代码演示了我在学习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中都没有必要.

如何将这种代码构造成一个没有堆栈空间问题和/或懒惰的代码?

stack haskell

3
推荐指数
2
解决办法
302
查看次数