小编lan*_*ula的帖子

是什么让 Bytestring 变得“懒惰”?

我正在学习 Haskell,但在理解惰性 ByteStrings 的工作原理时遇到了一些困难。Hackage说“Lazy ByteStrings 使用严格块的惰性列表,这使其适用于 I/O 流任务”。相比之下,严格列表存储为一个大数组。

惰性字节串中的这些“块”是什么?你的编译器如何知道一个块应该有多大?此外,我知道惰性列表背后的想法是您不必存储整个事物,因此允许无限列表和所有这些。但是这个存储是如何实现的呢?每个块都有指向下一个块的指针吗?

非常感谢您的帮助:)

haskell lazy-evaluation bytestring

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

Haskell中括号内的双点是什么意思?

我知道“..”可以在范围内使用——即,[1..3] == [1,2,3],而 [10..] 是一个从 10 开始的无限列表。

但是,最近我也开始在括号内看到这些双点。作为 (..) 或 {..}。

例如,导入语句可以读取 import Colog (HasLog (..))

我的第一个直觉是认为这意味着 HasLog 有几个组件,我们明确地导入所有这些组件。但这与不带“(..)”的简单导入 HasLog 有何不同?

此外,(..) 与 {..} 有何不同?

haskell notation

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

标签 统计

haskell ×2

bytestring ×1

lazy-evaluation ×1

notation ×1