The*_*kle 15 haskell standard-library ghc
我正在寻找定义,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
Run Code Online (Sandbox Code Playgroud)
源代码中有更多此定义.这是怎么回事?
Dan*_*her 21
发生的事情是这些函数无法在Haskell中实现,但它们应该出现在文档中.由于haddock
需要每个签名的语法正确(和良好类型)定义,因此源必须包含虚拟定义.此外,在它们被定义的位置(在ghc-prim
包中),error
(并因此undefined
)尚不可用,因此seq = error "Not implementable in Haskell"
不能使用更明显,因此是圆形定义.