目前我只使用哈多克,但在看到一些非常有趣的例子(如这个要点 )的Haskell,我有兴趣尝试一个项目。 我得到的问题是: 你写什么作为哈多克评论,你在文学部分写什么? 如何将文学编程扩展到多个文件? 任何人都可以指出一个例子,在多个模块的包中使用literate编程吗? 在大型软件包中使用文字编程的经验是什么? 识字Haskell的哪种风味(降价,乳胶,…)是首选? 你为什么编程识字的Haskell或简单的香草Haskell? 你是在两种风格编程,如果是的话,为什么? 你喜欢块式( \begin{code} )还是Bird式( > )? 为什么?
在parsing器组合库(如Haskell的Parsec)中编写parsing器时,通常有两个select: 编写一个词法分析器,将您的Stringinput分成标记,然后在[Token]上执行parsing 直接在String上写分析器组合器 第一种方法通常似乎是有道理的,因为许多parsinginput可以被理解为由空格分隔的令牌。 在其他地方,我曾经看到人们build议不要使用标记(或者扫描或者打点 ,有些人称之为),简单地被引用为主要原因。 勒索与不做之间的一般权衡是什么?
很显然,任何n元组都可以用一堆嵌套的2元组来表示。 那么为什么他们在Haskell中不是同一件事呢? 这会打破什么? 使这些types相同将会使元组上的函数写得更容易。 例如,您可以不定义zip,zip2,zip3等,而只定义一个适用于所有元组的zip函数。 当然,你可以使用嵌套的2元组,但它很丑,没有规范的方法来执行嵌套(即我们应该嵌套到左边还是右边?)。
一些像Haskell(或Nemerle)这样的语言有quasiquotations 。 我不知道“准”是什么意思,如果没有“准”部分也存在“引用”。
有没有办法告诉如果Haskell中的列表是无限的? 原因是我不想将length等函数应用到无限列表中。
在学习函数式编程的同时,我还会遇到“纯粹的理由”一词,特别是在纯函数和/或参照透明性的背景下。 有人可以解释这到底是什么意思?
Haskell的types推断引擎比Scala更强大。 在Haskell中,我很less需要明确地写出types,而在Scala中,types只能在expression式中推断,而在方法定义中则不能。 例如,请参阅以下Haskell代码片段: size xs = loop xs 0 where loop [] acc = acc loop (_ : xs) acc = loop xs (acc+1) 它返回一个List的大小。 Haskell编译器可以识别使用什么types以及函数定义是什么。 等效的Scala代码: def size[A]: List[A] => Int = xs => { def loop: (List[A], Int) => Int = { case (Nil, acc) => acc case (_ :: xs, acc) => […]
有谁知道如何获得cabal install利用并行性? 我正在编译GHC,虽然我不知道GHC本身是否可以并行编译,但是cabal install可以同时运行多个编译,不是吗? 至less对于独立的,独立的软件包? 有谁知道这是可能的,以及如何做到这一点?
如何从string的开始和结尾修剪空格? trim " abc " => "abc" 编辑: 好吧,让我更清楚一点。 我不明白string文字与string是如此不同的。 我想这样做: import qualified Data.Text as T let s :: String = " abc " in T.strip s 这在Haskell中可能吗? 我正在使用-XOverloadedStrings,但似乎只适用于文字。
有没有什么好的方法来制作小型的haskell可执行文件? 用ghc6,一个简单的hello世界程序似乎达到了370kB(523kB之前)。 C中的Hello world约为4kB(带前9kB)。