gpt4 book ai didi

haskell - $! 和有什么区别? (美元感叹号)和 !(感叹号)

转载 作者:行者123 更新时间:2023-12-02 17:08:14 31 4
gpt4 key购买 nike

https://stackoverflow.com/a/2787560/645703说:

($!) is strict function application. That is, it evaluates the argument before evaluating the function.

我知道!(感叹号)是 Haskell 中的严格性声明。看起来两者都有严格适用的东西,但是有什么区别呢?

最佳答案

BangPatterns 扩展启用的

! 始终处于绑定(bind)之前的模式中,如下所示:

add :: Int -> Int -> Int
add !a b = a + b

这意味着“如果执行尝试强制此模式情况,则在评估模式的右侧之前减少 !-ed 与弱头范式的绑定(bind)”

f$! x 表示“如果执行尝试强制执行此操作”f $! x”表达式,然后首先将“x”约简为弱头范式,然后将“f”应用于约简后的“x””。

在这两种情况下,请注意严格性注释仅表达条件语句。如果我有一个 f $!如果执行从未尝试强制 f $! x 就躺在周围(其中 x 可能是复杂计算的 thunk)。 x,那么当然不会评估任何内容。

关于haskell - $! 和有什么区别? (美元感叹号)和 !(感叹号),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29094046/

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