gpt4 book ai didi

optimization - haskell 。严格应用$!

转载 作者:行者123 更新时间:2023-12-03 16:20:58 25 4
gpt4 key购买 nike

我执行下一个代码:

(take 10) $! [1,2..]

它是什么 ?我想,ghc 会产生终止,因为我说“评估 [1,2..] 力”。但我得到了结果“[1,2,3,4,5,6,7,8,9,10]”。

最佳答案

因此,您希望对列表进行全面评估。 ($!) 是根据 seq 实现的, 和 seq根据文档,“仅”评估为正常形式。只有当值为 undefined 时才会有所作为:

Prelude> take 0 undefined
[]
Prelude> take 0 $! undefined
*** Exception: Prelude.undefined

一个函数的参数是严格的,如果
f undefined = undefined

这并不意味着以一种急切的方式对论证进行了全面评估。你想要的是类似 DeepSeq 的东西.
GHCi, version 6.10.1: http://www.haskell.org/ghc/  :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer ... linking ... done.
Loading package base ... linking ... done.
[1 of 1] Compiling DeepSeq ( deepSeq.lhs, interpreted )
Ok, modules loaded: DeepSeq.
*DeepSeq> take 1 $!! [1,2,undefined]
*** Exception: Prelude.undefined
*DeepSeq>

你的例子 $!!来自 DeepSeq永远运行。

关于optimization - haskell 。严格应用$!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1582148/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com