Tag: 哈斯克尔

Rust和Haskell的types类的特性有什么区别?

在Rust中的特性看起来至less和Haskell中的types类似,但是我看到有人写了他们之间的一些区别。 我想知道这些差异究竟是什么。

Haskellinput错误parsing错误`='

我是Haskell的新手,开始ghci我尝试了: fx = 2 * x 我得到了: <interactive>:1:4: parse error on input `=' 我不明白。 奇怪的是,它之前运作良好。 我想我做了错误configuration的Haskell。 重新安装ghc6并不能解决问题。 有关信息,我使用Ubuntu 10.4和ghc6的版本是6.12.1-12

Haskell是否需要垃圾回收器?

我很好奇为什么Haskell实现使用GC。 我不能想到一个纯语言中需要GC的情况。 这只是减less复制的优化,还是实际上是必要的? 我正在寻找代码,如果GC不存在将泄漏的示例代码。

尽pipe只有22Mb的内存使用量,Haskell线程堆溢出了吗?

我正在尝试并行化射线追踪器。 这意味着我有一个很长的小计算列表。 香草程序运行在67.98秒的特定场景和13 MB的总内存使用率和99.2%的生产率。 在我的第一次尝试中,我使用了缓冲区大小为50的并行策略parBuffer 。我select了parBuffer因为它只是像消耗火花一样parList列表,并且不会像parList那样parList列表的脊柱,由于名单很长,所以很多记忆。 使用-N2 ,运行时间为100.46秒,总内存使用量为14 MB,生产力为97.8%。 火花信息是: SPARKS: 480000 (476469 converted, 0 overflowed, 0 dud, 161 GC'd, 3370 fizzled) 大部分失败的火花表明火花粒度太小,所以接下来我尝试使用策略parListChunk ,它将列表拆分成块,并为每个块创build一个火花。 我用0.25 * imageWidth的块大小得到了最好的结果。 该程序运行93.43秒,总内存使用量达到236 MB,生产力达到97.3%。 火花信息是: SPARKS: 2400 (2400 converted, 0 overflowed, 0 dud, 0 GC'd, 0 fizzled) 。 我相信更大的内存使用是因为parListChunk强制列表的脊椎。 然后,我试图写我自己的策略,懒惰地将列表分成块,然后将块传递给parBuffer并连接结果。 concat $ withStrategy (parBuffer 40 rdeepseq) (chunksOf 100 (map colorPixel […]

如何在ghci跨越多行定义一个函数?

我试图定义任何跨越ghci多行的简单函数,以下面的例子为例: let abs n | n >= 0 = n | otherwise = -n 到目前为止,我已经尝试在第一行之后按Enter键: Prelude> let abs n | n >= 0 = n Prelude> | otherwise = -n <interactive>:1:0: parse error on input `|' 我也试图使用:{和:}命令,但我没有得到太多: Prelude> :{ unknown command ':{' use 😕 for help. 我在Linux上使用GHC交互版本6.6的Haskell 98,我错过了什么?

如何用Language.Haskell.Interpreter发布可执行文件?

我希望能够使用hint来embedded一个Haskell解释器,这样我就可以在Haskell中编写插件来与我的程序一起使用。 我不想为我的可执行文件运送该死的Haskell平台。 通常,Haskell可执行文件是相当独立的。 例如,擦除PATH不会导致问题: $ PATH=. Hello Hello world 但是,如果我擦除PATH使用runInterpreter炸弹一个简单的testing程序: $ PATH=. TryHint GhcException "panic! (the 'impossible' happened)\n (GHC version 7.8.3 for x86_64-apple-darwin):\n\tDynamic linker not initialised\n\nPlease report this as a GHC bug: http://www.haskell.org/ghc/reportabug\n" 它需要什么样的库或可执行文件才能运行? otool并没有给出太多指导: otool -L TryHint TryHint: /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1213.0.0) /usr/lib/libiconv.2.dylib (compatibility version 7.0.0, current version 7.0.0) /usr/local/lib/libgmp.10.dylib (compatibility […]

为什么不从属地input?

我已经看到了几个消息来源,认为“Haskell正逐渐成为一种依赖型语言”。 这意味着,随着越来越多的语言扩展,Haskell正朝着这个大方向漂移,但还没有到来。 基本上有两件事情我想知道。 第一,很简单,“作为一种依赖型语言”实际上是什么意思 ? (希望不要过于技术性) 第二个问题是…缺点是什么? 我的意思是,人们知道我们正在走这条路,所以一定有一些优势。 但是,我们还没到,所以肯定会有一些不利因素阻止人们一路走来。 我觉得问题是复杂性急剧增加。 但是,并不真正了解什么依赖types,我不知道。 我所知道的是,每当我开始阅读一个依赖types的编程语言,文本是完全不可理解的……可能是这个问题。 (?)

非Functor / Functor / Applicative / Monad的好例子?

在向某人解释什么是Xtypes的时候,我很难find恰好是X的数据结构的好例子。 所以,我请求例子: 一个不是Functor的types构造函数。 一个types构造函数,它是一个Functor,但不适用。 一个types构造函数是一个应用程序,但不是一个Monad。 Monad的types构造函数。 我认为Monad在世界各地都有很多的例子,但是Monad的一个很好的例子是与之前的例子有一些联系,可以完成这个图画。 我寻找相似的例子,仅在属于特定types的重要方面有所不同。 如果有人能够在这个层次结构的某个地方偷偷摸摸地find一个箭头的例子(它在Applicative和Monad之间?),那也太棒了!

Haskell:列表,数组,向量,序列

我正在学习Haskell,并阅读了一些关于Haskell列表和(插入你的语言)数组的性能差异的文章。 作为学习者,我显然只是使用列表,甚至不考虑性能差异。 我最近开始调查,发现了Haskell中的大量数据结构库。 有人可以解释列表,arrays,向量,序列之间的差异,而不会深入数据结构的计算机科学理论? 另外,有一些常见的模式,你会使用一个数据结构,而不是另一个? 还有什么其他forms的数据结构,我错过了,可能是有用的?

关于模板哈斯克尔有什么不好的?

Haskell社区经常将Haskell看作是一种不幸的方便。 在这方面,我很难说出我所观察到的,但考虑这几个例子 模板Haskell在“The Ugly(but necessary)”中列出,以回答用户使用/避免哪些Haskell(GHC)扩展的问题? 模板Haskell在newtype的值线程(库邮件列表) 的Unboxed Vectors中考虑了临时/ Yesod经常因为过分依赖Template Haskell而受到批评(参见博客文章以回应这种情绪) 我看过各种博客文章,人们使用Haskell模板做了非常整洁的事情,使得在Haskell中经常不可能的漂亮的语法,以及巨大的样板化。 那么为什么模板Haskell被这样看呢? 是什么让它不受欢迎? 在什么情况下应该避免模板哈斯克尔,为什么?