haskell - 浏览前奏的源代码会产生怪异

标签 haskell ghc standard-library

我在寻找 seq 的定义并遇到了这种奇怪的事情。为什么所有这些函数都有相同/相似的定义?

seq :: a -> b -> b
seq = let x = x in x

inline :: a -> a
inline = let x = x in x    

lazy :: a -> a
lazy = let x = x in x

源代码中还有更多具有此定义的内容。这是怎么回事?

最佳答案

发生的事情是这些功能无法在 Haskell 中实现,但它们应该出现在文档中。由于haddock每个签名都需要一个语法正确(并且类型正确)的定义,源必须包含虚拟定义。此外,在它们被定义的地方(在 ghc-prim 包中),error (因此 undefined )尚不可用,因此更明显的 seq = error "Not implementable in Haskell"不能使用,因此是循环定义。

关于haskell - 浏览前奏的源代码会产生怪异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8652368/

相关文章:

haskell - 仿函数和非感应类型

Haskell 编码风格 : map, fmap 或 <$>?

haskell - 哪些 Haskell 仿函数等价于 Reader 仿函数

debugging - haskell -- -ddump-simpl 是获得具体类型的最佳方法吗?

c++ - const 容器是否只有 const 迭代器?

python - 在 Numpy 中映射失败

haskell - 仅在某些情况下在 GHC 解释器中执行 : concat <some list> ! 时才会发生空间泄漏! n

Haskell 动态库

loops - 尽管 Kotlin 的 `Map` 不是 `Iterable` ,但它如何以及为什么可迭代?

c - 按位置索引提取子串的库函数