Tag: haskell

STArray文件的新手和州/ ST相关的问题

我很难从文档和其他howtos /我通过谷歌发现的讨论了解STArray 。 下面还有一些相关的问题。 根据文件, STArray是 ST monad中的可变盒装和非盒装数组。 这给我的印象是, STArray是用来作为一个状态被传递函数之间(想象你有一个向量,必须经常更新)。 显然,这有不同的用法: ST s (STArray sae) 这里的状态s什么? 如果它在内部使用,那么为什么这不是从用户隐藏? 这也意味着,如果我们想用一个STArray s Int Int作为状态传递,就可以定义 type StateArray a = Control.Monad.State (ST s (STArray s Int Int)) a 这似乎相当麻烦。 最后, ST State什么区别? 如果ST和IO是用于“内部”使用, STArray和IOArray之间有什么区别? 谢谢!!

有没有一个Haskell代码格式化程序?

我曾经写 data A = A { a :: Double } deriving(Eq, Show) 但现在我更喜欢 data A = A { a :: Double } deriving(Eq, Show) 我认为答案是否定的,但我仍然问:Haskell有一个代码格式化程序吗?

Parsec vs Yacc / Bison / Antlr:为什么以及何时使用Parsec?

我是Haskell和Parsec的新手。 在阅读第16章使用Haskell的Parsec之后,我想起了一个问题:为什么Parsec比其他parsing器生成器(比如Yacc / Bison / Antlr)更好? 我的理解是,Parsec创build了一个很好的编写parsing器的DSL,Haskell使它非常容易和expression。 但是parsing就是这样一种标准/stream行的技术,值得自己的语言输出到多种目标语言。 那么我们什么时候应该使用Parsec而不是从Bison / Antlr生成Haskell代码呢? 这个问题可能会超越技术,进入行业实践领域。 从头开始编写parsing器时,拿起Haskell / Parsec相比于Bison / Antlr或类似的东西有什么好处? 顺便说一句:我的问题与这个问题非常相似,但在那里没有得到满意的回答。

ghc编译的二进制文件是否需要GHC还是独立的?

如果一个朋友想运行我的Haskell二进制文件,他是否必须首先安装Haskell,或者他能立即运行二进制文件? Mac,Windows和Linux上的答案是一样的吗?

GHC垃圾收集的RTS选项

我有一个Haskell程序处理一个文本文件,并build立一个Map (数百万元)。 整个事情可以运行2-3分钟。 我发现调整-H和-A选项对运行时间有很大的影响。 有关于RTS的这个function的文档 ,但是对于我来说这是一个很难读懂的东西,因为我不知道GC理论中的algorithm和术语。 我正在寻找一个较less的技术解释,最好是特定于Haskell / GHC。 有没有关于select这些选项的明智价值的参考? 编辑:这是代码,它build立一个给定的单词列表trie。 buildTrie :: [B.ByteString] -> MyDFA buildTrie l = fst3 $ foldl' step (emptyDFA, B.empty, 1) $ sort $ map B.reverse l where step :: (MyDFA , B.ByteString, Int) -> B.ByteString -> (MyDFA , B.ByteString, Int) step (dfa, lastWord, newIndex) newWord = (insertNewStates, newWord, newIndex […]

GHC扩展名列表

我想用{-# LANGUAGE OverloadedStrings #-}但我忘了它是如何调用的。 这种事情不是好事,也需要一些时间来find使用谷歌*。 GHC扩展名列表中是否存在LANGUAGE编译指示? *我使用Googlesearch的search行程: 谷歌 哈斯克尔在维基百科 GHC在维基百科 GHC语言function 重载string文字 OverloadedStrings

纯文本编辑器的function数据结构

文本编辑器有什么好的纯function数据结构? 我希望能够将单个字符插入到文本中,并以可接受的效率从文本中删除单个字符,并希望能够保留旧版本,以便轻松地撤消更改。 我应该只使用一个string列表,并重新使用从版本到版本不变的行?

F#vs Haskell vs Lisp – 学习哪种语言?

我听过很多关于函数式编程语言的知识,而且我也很愿意学习。 我想这将主要是为了好玩,但是,我希望这会提高我的编程技能。 我主要是C#/ .net背景,所以我的第一select是学习F#(因为.NET和熟悉Visual Studio)。 另一方面,我想知道F#是否具有像Lispmacros或Haskell高阶函数的function。 你能比较F#,Haskell和Lisp吗? 哪一个将是你select的语言?

Y组合在Haskell

是否有可能在Haskell中编写Y Combinator ? 它似乎会有一个无限的recursiontypes。 Y :: f -> b -> c where f :: (f -> b -> c) 或者其他的东西。 即使是一个简单的因子 factMaker _ 0 = 1 factMaker fn n = n * ((fn fn) (n -1) {- to be called as (factMaker factMaker) 5 -} “发生检查:不能构造无限types:t = t – > t2 – > t1” (Y组合器看起来像这样 […]

哪个Haskellparsing技术是最令人愉快的使用,为什么?

“愉快”的意思,例如:你可以用一种“自然”的方式写出语法,而不必以复杂的方式重写它们,而不必引入枯燥的样板。 为了这个问题的目的,我们要规定,除非技术的performance是病态的,否则performance不是这里最大的问题。 尽pipe如此,您可能想提及一个技术是否因性能原因而重写语法。 当回答这个问题时,请给我一个关于您所使用的语法的大小和复杂性的想法。 此外,您是否使用过该技术的任何显着的“高级”特征,以及您对这些特征的印象如何。 当然,这个问题的答案可能取决于领域,在这种情况下,我很乐意了解这个事实。