- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
基本上我很好奇代码是否像:
let myCollection = Data.SomeCollection.fromList [1, 2, foo]
SomeCollection
的中间步骤。 ——或者如果这只是为了语法方便,编译器避免在编译后的代码中列出列表?
最佳答案
简短回答:也许,在某种程度上,但不是真的……
更长的答案:
当您说链表时,您是在以命令式的方式思考。 Haskell 既懒惰又实用,这使得这个问题很难回答。[a,b,c]
是 a:(b:(c:[]))
的简写.如果我们对此进行全面评估(例如尝试将其打印出来),那么最终在内存中的内容看起来和行为很像 C 中的链表,但有更多的大脑。但这通常不会发生在功能设置中的列表上。大多数基于列表的函数的操作方式是对列表的头部做一些事情,然后将列表的尾部发送到其他地方(可能是同一个地方)。这意味着列表看起来确实像 x:xs
在哪里 xs
只是一些将创建列表其余部分的函数。 (GHC 术语中的一个 thunk)
整个列表不会像在命令式语言中那样创建,然后进行处理。它通过 fromList
流式传输一次运行一件。
至少这是大多数 fromList
的方式功能起作用。一个通用的 fromList
集合可能如下所示:
fromList :: [a] -> Collection a
fromList = Data.List.foldl' insert empty
fromList [1, 2, foo]
empty `insert` 1 `insert` 2 `insert` foo
GHC
的启示如果我离基地很远的话,大师们。
关于haskell - 通过 fromList 创建(非列表)数据结构实际上会创建列表吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25964737/
基本上我很好奇代码是否像: let myCollection = Data.SomeCollection.fromList [1, 2, foo] 实际上是在执行它在运行时的样子,并创建一个链表作为创
作为我理解单例旅程的一部分,我试图弥合编译时安全性和将运行时值提升到依赖类型安全性之间的差距。 我认为“运行时”值的一个最小示例是一个接受无界列表并将其转换为大小索引向量的函数。以下骨架提供了长度索引
作为我理解单例旅程的一部分,我试图弥合编译时安全性和将运行时值提升到依赖类型安全性之间的差距。 我认为“运行时”值的一个最小示例是一个接受无界列表并将其转换为大小索引向量的函数。以下骨架提供了长度索引
我正在尝试摸索进入依赖类型。基于下面 windowl 函数的逻辑,我想返回一个向量列表,其长度取决于提供的 size。 window : (n : Nat) -> List a -> List (Ve
通常,当将 Python 和 C 代码粘合在一起时,需要将 Python 列表转换为连续的内存,例如一个 array.array。这个转换步骤成为瓶颈也很常见,所以我发现自己用 Cython 做一些愚
在 Python 中,如果你想以编程方式导入模块,你可以这样做: module = __import__('module_name') 如果你想导入一个子模块,你会认为这很简单: module = _
我是一名优秀的程序员,十分优秀!